【发布时间】:2010-09-17 19:06:37
【问题描述】:
MySQL 5.0.45
改变表以允许列为空的语法是什么,或者这有什么问题:
ALTER mytable MODIFY mycolumn varchar(255) null;
我将手册解释为只是运行上面的内容,它会重新创建列,这次允许 null。服务器告诉我我有语法错误。我只是没有看到它们。
【问题讨论】:
-
列不是唯一的或类似的东西
MySQL 5.0.45
改变表以允许列为空的语法是什么,或者这有什么问题:
ALTER mytable MODIFY mycolumn varchar(255) null;
我将手册解释为只是运行上面的内容,它会重新创建列,这次允许 null。服务器告诉我我有语法错误。我只是没有看到它们。
【问题讨论】:
我的解决方案和@Krishnrohit 一样:
ALTER TABLE `table` CHANGE `column_current_name` `new_column_name` DATETIME NULL;
我实际上将列设置为NOT NULL,但通过上述查询,它已更改为NULL。
附:我知道这是一个旧线程,但似乎没有人承认 CHANGE 也是正确的。
【讨论】:
使用:
ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);
【讨论】:
我的解决方案:
ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL
例如:
ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;
【讨论】:
在某些情况下(如果你得到“ERROR 1064 (42000): You have an error in your SQL syntax;...”)你需要这样做
ALTER TABLE mytable MODIFY mytable.mycolumn varchar(255);
【讨论】:
您的语法错误是由查询中缺少“表”引起的
ALTER TABLE mytable MODIFY mycolumn varchar(255) null;
【讨论】:
NULL 没有任何问题,它不会使这个答案比接受的答案更“正确”吗?知道默认情况下列可以为空(如接受的答案中所述)对于这个特定问题很有帮助。
您想要以下内容:
ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);
默认情况下,列可以为空。只要该列未声明UNIQUE 或NOT NULL,就应该没有任何问题。
【讨论】:
TIMESTAMP 类型,这取决于您的 MySQL 版本和配置可以是 NOT NULL 指定 @ConroyP 建议的 NULL 更正确。