476

MySQL 5.0.45

更改表以允许列为空的语法是什么,或者这有什么问题:

ALTER mytable MODIFY mycolumn varchar(255) null;

我将手册解释为只是运行上面的内容,它会重新创建列,这次允许 null。服务器告诉我我有语法错误。我只是没有看到他们。

4

6 回答 6

705

您需要以下内容:

ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

默认情况下,列可以为空。只要该列未声明UNIQUEor NOT NULL,就不应该有任何问题。

于 2008-10-17T16:55:11.550 回答
312

您的语法错误是由查询中缺少“表”引起的

ALTER TABLE mytable MODIFY mycolumn varchar(255) null;
于 2008-10-17T16:58:39.093 回答
37

我的解决方案:

ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL

例如:

ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;
于 2011-11-24T09:36:43.153 回答
8

在某些情况下(如果你得到“ERROR 1064 (42000): You have an error in your SQL syntax;...”)你需要做

ALTER TABLE mytable MODIFY mytable.mycolumn varchar(255);
于 2009-09-02T16:15:27.520 回答
5

我的解决方案与@Krishnrohit 相同:

ALTER TABLE `table` CHANGE `column_current_name` `new_column_name` DATETIME NULL;

我实际上将列设置为,NOT NULL但通过上面的查询,它被更改为NULL.

PS我知道这是一个旧线程,但似乎没有人承认这CHANGE也是正确的。

于 2019-04-20T20:35:42.200 回答
-9

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

于 2015-08-12T13:21:09.150 回答