2008-10-17 79 views
288

的MySQL 5.0.45如何修改MySQL列以允許NULL?

什麼是改變一個表,讓一列是null語法,交替什麼不對的:

ALTER mytable MODIFY mycolumn varchar(255) null; 

我解釋手冊,因爲剛好運行上面,它會重新創建列,這次允許null。服務器告訴我我有語法錯誤。我只是看不到他們。

+0

列不是唯一的或其他任何類似的 – zmf 2008-10-17 16:53:59

回答

421

你想以下幾點:

ALTER TABLE mytable MODIFY mycolumn VARCHAR(255); 

列默認爲空。只要列沒有被宣佈爲UNIQUENOT NULL,就不應該有任何問題。

+9

有邊緣的情況下這是'TIMESTAMP`類型,這取決於你的MySQL版本和配置可以`不NULL`指定@ConroyP建議的`NULL`更正確。 – 2016-01-26 13:37:41

+0

這不適合我!專欄沒有改變。也許是因爲我對使用該列的另一個表有一個約束(當不爲空時)。 – Rocologo 2016-12-18 10:09:27

150

你的語法錯誤是由缺少「表」查詢

ALTER TABLE mytable MODIFY mycolumn varchar(255) null; 
+14

這實際上是正確的答案 - 雖然NULL子句不是必需的,但提供它沒有任何問題。 ALTER TABLE語句中缺少的TABLE是真正的問題。 – SamStephens 2014-11-20 20:38:14

4

在某些情況下(如果出現「Error 1064(42000)原因造成的:你在你的SQL語法錯誤; .. 「)。你需要做的

ALTER TABLE mytable MODIFY mytable.mycolumn varchar(255); 
17

我的解決辦法:

ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL 

例如:

ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL; 
-4

用途: ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

相關問題