2008-10-17 92 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);