阿里云RDS MySQL因为时间戳导致的数据无法导入的问题

技术运维MySQL 621

在阿里云RDS MySQL7到8的导入过程中出现错误:

[Err] 1067 - Invalid default value for 'created'
[Err] 1067 - Invalid default value for 'tmptime'

这是由于mysql中的sql_mode参数中“NO_ZERO_IN_DATE,NO_ZERO_DATE”这两个变量的时间戳格式的严格限制引起的,首先需要查看这个参数的设置情况:

show variables like 'sql_mode' ; 

解决方法

#Option 1 正常情况(非阿里云)

set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

或者

SET sql_mode = '';

#Option2 阿里云RDS

如果在RDS客户端使用set sql_mode这样的语句查询后会被系统配置自动覆盖,所以问题不会得到解决,正确的解决方式是在阿里云后台面板,找到RDS中的参数设置这一项修改并提交。

Post Comment