Bom*_*ley 14 mysql default-value
我想澄清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
Boe*_*ema 12
您在5.5中显示的行为实际上是一个错误.这在5.6.11中得到修复.查看最底部的5.6.11发行说明.它是错误68472和16394472(我实际上找不到链接)的一部分.
如果关闭explicit_defaults_for_timestamp标志,它应该像在5.5中那样工作
当我们从5.5更新到5.6时,这与我的数据库完全相同.
| 归档时间: | 
 | 
| 查看次数: | 3768 次 | 
| 最近记录: |