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