阿里云RDS MySQL因为时间戳导致的数据无法导入的问题
在阿里云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中的参数设置
这一项修改并提交。