DM的case-sensitive参数疑问

【 TiDB 使用环境】测试
【 TiDB 版本】v6.5.1
【复现路径】

看到DM的文档上写这么个参数:

case-sensitive: false           # schema/table 是否大小写敏感

但实际在TiDB中Schema是不区分大小写的,例如:

也就是说,假设MySQL的某个库有两张表tt1TT1,那么放在TiDB中肯定是会冲突的

DM的case-sensitive参数意义是啥呢?

经实际测试,不管这个参数设置成true还是false,start-task都会提示表名冲突。

lower_case_table_names这个参数设为0,tidb就是大小写敏感了吧

6bd50d28fd9f6c1d1ce9c2082cebaae

这个应该是跟上游有关吧,针对fillter,假如上游有ttl,TTL两张表,在配置fillter的时候的table为ttl,而case-sensitive=false,那么ttl,TTL两张表都会同步,同步过程中就会出现同步失败的情况,因为tidb会报表已经存在,或者主键冲突等等的错,如果case-sensitive=true,那么就只会同步ttl表,同步不会报错,感觉差距在这吧

1 个赞

从您的咨询来看,您的上游mysql 肯定是大小写敏感的。
DM 仅仅是将数据导出来,并且使用的还是上游的binlog日志
tidb 下游数据库也必须的保持 大小写敏感才行,不然就会报错:您上面的对象已经存在的错误

###################################
但是您的tidb可能是大小写不敏感吧

对于DM从binlog提取出来的 ttl TTL 。如果将大写表名转换成小写,就会报错。可以从报错日志来看下。

您好:您能发下, 这个 DM链路,上游创建 大小写 表 报错的日志吗 ??

你说的这个是DM上游数据源里的配置,我这个是Task里的配置,感觉作用不一样吧

上游mysql创建大小写表没报错,dm同步的时候报表名重复

mysql 执行下 。 show variables like ‘%case%’; 发出来看下

感觉作用是一样的吧,都是针对路由或者筛选规则来的,不然也想不出其他用处了,按照mysql来理解的话就像是一个是作用在传输到relay-log的规则,一个是读取应用relay-log的规则

image

如果是这样的话,那就只能说文档描述的不清晰了 :rofl:
也确实想不到其他作用了

lower_case-_table_names =0 大小写 敏感。 源端。 所以不会报错。
您把 tidb的 参数也发下。

源端表没有忽略大小写 ,通过DM写入TIDB 需要加上case-sensitive,不然DM同步会报错

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