MySQL 5.0.45
如何使用语法修改表以允许列为空,或者这个语法有什么问题:
ALTER mytable MODIFY mycolumn varchar(255) null;
我理解手册的意思是仅需运行以上代码,就可以重新创建该列,这一次允许空值。但服务器告诉我存在语法错误,我却看不到。
您需要以下内容:
ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);
默认情况下,列是可为空的。 只要该列未声明为 UNIQUE
或 NOT NULL
,就不应该存在任何问题。
TIMESTAMP
类型,具体取决于你使用的 MySQL 版本和配置,可以将其指定为 NOT NULL
,但建议使用 @ConroyP 提出的方法将其设为 NULL
更为准确。 - Matthew Buckett您的语法错误是由查询中缺少"table"引起的
ALTER TABLE mytable MODIFY mycolumn varchar(255) null;
NULL
没有问题,并不意味着这个答案比被接受的答案更 "正确"。知道列默认是可空的(如被接受的答案中所述)对于这个特定的问题是有帮助的。 - rybo111我的解决方案:
ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL
例如:ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;
我的解决方案与@Krishnrohit相同:
ALTER TABLE `table` CHANGE `column_current_name` `new_column_name` DATETIME NULL;
实际上,我将该列设置为NOT NULL
,但是通过上面的查询,它被更改为NULL
。
P.S. 我知道这是一个旧的主题,但似乎没有人承认CHANGE
也是正确的。
在某些情况下(如果您收到“ERROR 1064 (42000):您的SQL语法中有错误...”),您需要执行以下操作:
ALTER TABLE mytable MODIFY mytable.mycolumn varchar(255);
ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);