1
列
默认为空值,我已经有一个表,简化的例子:无法设置
CREATE TABLE t (c INT NOT NULL);
,我需要列缺省值更改为NULL,所以我尝试:
ALTER TABLE t ALTER COLUMN c SET DEFAULT NULL;
但我得到错误“错误代码:1067。'c'的默认值无效。” 看起来很奇怪,因为查询符合官方文档。
我甚至想:
ALTER TABLE t ALTER COLUMN c DROP DEFAULT;
和之后做一个 'SET DEFAULT NULL' 查询,但发生了同样的错误。 有趣的是,这样的查询:
ALTER TABLE t ALTER COLUMN c SET DEFAULT 1;
执行没有错误。
我知道,这是可以使用列缺省值更改为NULL在我的情况:
ALTER TABLE t MODIFY COLUMN c INT NULL;
但此查询是大表很慢(它会非常慢,不是像“SET查询DEFAULT 1')
那么,如何将默认值更改为NULL?
我的意思是,没有任何由'MODIFY COLUMN'命令引起的开销。
详细信息:MySQL x64版本5.7.10,Win8。使用MySQL Workbench进行测试。
您已经创建了表不能为空列“C”的唯一途径,所以你不能做它默认为NULL。没有将列修改为Nullable,恐怕你永远不能将它设置为NULL ..一旦你设置为Nullable,当你在这个列中添加一个没有值的新记录时,它应该默认为NULL。 – ydoow