通用方法:解决mysql5.7 timestamp默认值0000-00-00 00:00:00 报错

问题说明:

mysql5.7 timestamp默认值0000-00-00 00:00:00 导致创建表失败,报错信息:

1067 - Invalid default value for 'updated_time'

1067 - Invalid default value for 'updated_time'

`updated_time` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000' COMMENT '更新时间'

找出原因:

sql_mode默认会有:NO_ZERO_IN_DATE 和 NO_ZERO_DATE 两个值,限制字段不能为零日期

select @@sql_mode;

@@sql_mode
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

解决方案:

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

注意set session sql_mode,仅对当前的会话有效,在执行建表语句之前先执行这个sql语句即可。

你可能感兴趣的:(开发经验,解决方案,mysql,数据库)