dm 同步 enum 类型报错

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
TiDB 5.3.0
DM 5.3.0

【概述】 场景 + 问题概述
复制表其中一个字段为 enum 类型
字段 c1 enum(‘png’,‘jpg’,‘jpeg’,‘gif’,‘bmp’,‘swf’,‘flv’,‘json’,‘webp’) DEFAULT NULL,

在dm复制过程中报错
Error 1105: item is not in enum

【现象】 业务和数据库现象
解析binlog发现 该字段中存储的日志为
@60=0 /* ENUM(1 byte) meta=63233 nullable=1 is_null=0 */

本人发现在MySQL中可以向enum类型中插入 0 这样的数值,但是同步到下游tidb后报错,请问如何解决?

可以看看这个

他这个帖子是数据不一致,我遇到的问题是数据报错,然后dm就停了

就是说我需要对 tidb 的enum类型增加一个 0 的枚举咯?

修改tidb的sql_mode 就可以了。将STRICT_TRANS_TABLES 关闭就好

还是有些问题,dm和tidb的SQL_mode 都修改过,也重启了worker,并重新start-task,还是卡在了 enum 的报错上,最终还是通过修改表结构 增加了 ‘’ 的类型正常复制的

dm 的 SQL_mode
session:
sql_mode: “NO_ENGINE_SUBSTITUTION”

TiDB的 SQL_mode ,在报错之后修改的
| sql_mode | NO_ENGINE_SUBSTITUTION |

emm,我用的5.4测试的,修改后0是能存进去的。应该不太会因为版本原因把。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。