mysql:[ERR] 32> 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘createTime‘ at ro
1.问题提出:
今天准备把Mysql数据库A传输到Mysql数据库AA中。
2.查看两个数据库的版本
A库:5.6.39
B库:8.0.19
3. 数据传输
3.1 工具-数据传输
3.2 选择源和目标
- 源:就是现在数据的库A
- 目标:需要把数据库送到的目的地B
3.3 选择表后点击下一步报错
在传输的过程中报错如下:
[ERR] 32> 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'createTime' at row 20
4 报错的解决方案
4.1 报错源因
因为mysql8对datetime字段做了0值校验,就是如果字段为datetime类型你个,如果你insert进去一个0那么就会报错。
知道了原因解决就比较方便了,把这个校验去掉就可以了。
4.2 解决方案
修改sql_mode的值就可以了。去掉这个校验规则就可以了。
4.2.1 查询全局sql_mode的值
select @@global.sql_mode;
结果为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
4.2.2 修改全局sql_mode的值
去掉下面两个既可以:
NO_ZERO_IN_DATE,NO_ZERO_DATE
修改:
set @@global.sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
再次查询结果为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
如果没有生效,请把navicate关闭重新打开接口生效
。
还没有评论,来说两句吧...