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



评论

0条评论

发表评论

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