MySQL - 我能将VARCHAR的默认值设置为NULL吗?

3
在mysql中,我尝试像这样更改现有表:
  ALTER TABLE  `etexts` CHANGE  `etext`  `etext` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT NULL

我收到了响应:
  #1067 - Invalid default value for 'etext' 

为什么?
2个回答

11

这是一种自相矛盾的情况,即将字段设置为NOT NULL,但同时又将其默认值设置为NULL...
去掉DEFAULT NULL并将NOT NULL更改为 NULL

ALTER TABLE  `etexts` CHANGE  `etext`  `etext` VARCHAR( 100 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL;

谢谢 - 奇怪的是,这就是phpmyadmin为我生成的!!(就是我在问题中粘贴的内容) - tzmatt7447
phpMyAdmin并不总是正确的。如果尚未报告错误,您可能需要填写一个错误报告。 - Lekensteyn

1

你不能将一个 NOT NULL 列默认值设置为 NULL。

如果你想让它可以为 NULL,则

... COLLATE latin1_swedish_ci NULL 

如果没有为列提供值,则NULLABLE列将自动默认为NULL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接