我希望对MySQL 5.5和5.6中默认值的行为有些澄清。假设我们在一个MySQL 5.5服务器上有以下表:
CREATE TABLE `test` (
`TestColumn` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=INNODB DEFAULT CHARSET=utf8;
我能够毫无问题地运行以下查询:
INSERT INTO `test` VALUES (NULL);
这将创建以下行:
TestColumn
2014-02-20 14:55:05
现在,如果我在一个MySQL 5.6服务器上重复进行相同的测试,则插入操作将失败:
Error Code: 1048
Column 'TestColumn' cannot be null
我理解在5.6中时间戳的自动初始化方式已更改(http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html),但我无法弄清楚如何在5.6中复制5.5中看到的行为。
不确定是否重要,但我们的5.6服务器已将explicit_defaults_for_timestamp设置为ON。
理想情况下,我想要的是解决方案,但如果有人能更好地理解并解释它,那也很有用。
谢谢。
编辑:我们正在使用MySQL 5.6.13
NULL
值。仅在未完全指定列或使用关键字DEFAULT
时才适用于使用默认值。 - user330315