mysql:[ERR] 32> 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘createTime‘ at ro

缺乏、安全感 2023-01-01 03:54 217阅读 0赞

1.问题提出:

今天准备把Mysql数据库A传输到Mysql数据库AA中。

2.查看两个数据库的版本

A库:5.6.39
B库:8.0.19
在这里插入图片描述
在这里插入图片描述

3. 数据传输

3.1 工具-数据传输

在这里插入图片描述

3.2 选择源和目标

  1. 源:就是现在数据的库A
  2. 目标:需要把数据库送到的目的地B
    在这里插入图片描述

3.3 选择表后点击下一步报错

在这里插入图片描述
在传输的过程中报错如下:

  1. [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的值

  1. select @@global.sql_mode;

结果为:

  1. 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的值

去掉下面两个既可以:

  1. NO_ZERO_IN_DATE,NO_ZERO_DATE

修改:

  1. set @@global.sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

再次查询结果为:

  1. ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

如果没有生效,请把navicate关闭重新打开接口生效

发表评论

表情:
评论列表 (有 0 条评论,217人围观)

还没有评论,来说两句吧...

相关阅读