为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
【概述】 场景 + 问题概述
用DM从mysql同步到tidb时syncer阶段报错:item is not in enum, 哪位大佬遇到过这个问题?求助
报错信息如下:
【备份和数据迁移策略逻辑】
【背景】 做过哪些操作
【现象】 业务和数据库现象
【问题】 当前遇到的问题
【业务影响】
【TiDB 版本】
tidb版本5.3v
【附件】
- 相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/)
- TiUP Cluster Display 信息
- TiUP CLuster Edit config 信息
- TiDB-Overview 监控
- 对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
- 对应模块日志(包含问题前后 1 小时日志)
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
2 个赞
Hi,可以用mysqlbinlog看看这个位置附近的原始binlog是什么吗
以及您的tidb版本是多少
2 个赞
Meditator
(Wendywong020)
3
问题:
可以发下表结构看看,那个enum类型的字段有个’’(空字符串)的元素存储在这个enum类型的字段里面,可以解析下对应的binlog 确认下。
解决:
1)上游mysql 需要规范数据存储;
2)启用safe-mode,带来的影响 可能会影响同步性能。
2 个赞
就是启用了safe-mode,然后重新同步任务就行!
1 个赞
是上下游表结构不一致吗,如果上游是 ENUM 的话不能写入空值吧
1 个赞
结构是一致的,上游这个enum字段存在空字符串,我们这个字段默认为空
1 个赞
Meditator
(Wendywong020)
11
实际上,mysql是可以insert或者说产生一些非枚举列表中的值。
参考这里:
https://asktug.com/t/topic/362785
3 个赞
请问safe-mode是在dm里面设置的吗?我使用的是5.3,没有找到在哪里配置
niubell
(niubell)
13
task.yaml 里可以加上 safe-mode: true 的配置项
system
(system)
关闭
14
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。