MySQL issues

mysql Invalid default value for

建表的时候,如果设置datetime字段为not null,默认值为0000-00-00 00 00:00:00,就会报错mysql Invalid default value for,这是因为在mysql5.6+的版本中,在strict模式下,不允在日期中出现类似这种值:‘0000-00-00’。你可以运行这条命令 show variables like ‘sql_mode’; 来查看sql_mode,如果出现NO_ZERO_IN_DATE,那么就是不允许上述情况了。粗暴的解决办法可以设置sql_mode允许出现这种零值日期的出现,或者在IGNORE 模式下建表,但是不建议。有几个解决方案

去掉默认值,改为`add_time` datetime DEFAULT NULL,

把datetime改为timestamp,`add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP。

如果要允许这种零日期的值为默认值,可以禁用no_zero_date

set GLOBAL sql_mode =’STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION ‘;

有时候通过命令行设置不生效,可以通过配置文件设置

sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION



Avatar photo

About Blackford

这是个最好的时代,这是个最坏的时代,这是个充满希望的春天,这是个令人绝望的冬天,我们前面什么都有,我们前面什么都没有。梦想,让我们一次次的走远,又一次次的回头,一个关于人生的梦想还在不断奔跑,带着喜悦和疼痛,不过一切才刚刚开始,并且直到今天也远远没有结束
This entry was posted in 架构运维. Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注