迁移数据时 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
修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE:
set sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";
重新执行SQL文件即可;
永久修改sql_model,需要修改my.ini文件;