迁移数据时 timestamp类型字段报错: 1067 - Invalid default value for 'login_time'

时间:2023-03-10 01:04:07
迁移数据时 timestamp类型字段报错: 1067 - Invalid default value for 'login_time'

MySQL数据库升级 8.0.13,原版本5.5;执行导出来的SQL文件时报错

1067 - Invalid default value for 'login_time'

原因:MySQL 5.6以后timestamp设定默认值规则改变,不能为”0000 00-00 00:00:00”

而我的字段是:`login_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '登陆时间',

问题解决:

查看sql_mode:

show session variables like '%sql_mode%';

结果:STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

迁移数据时 timestamp类型字段报错: 1067 - Invalid default value for 'login_time'

修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE:

set sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";

迁移数据时 timestamp类型字段报错: 1067 - Invalid default value for 'login_time'

重新执行SQL文件即可;

永久修改sql_model,需要修改my.ini文件;
迁移数据时 timestamp类型字段报错: 1067 - Invalid default value for 'login_time'