为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 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 的枚举咯?
林夕一指
(林夕一指)
6
修改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 |
林夕一指
(林夕一指)
8
emm,我用的5.4测试的,修改后0是能存进去的。应该不太会因为版本原因把。
system
(system)
关闭
9
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。