【 TiDB 使用环境】测试
【 TiDB 版本】v6.5.1
【复现路径】
看到DM的文档上写这么个参数:
case-sensitive: false # schema/table 是否大小写敏感
但实际在TiDB中Schema是不区分大小写的,例如:
也就是说,假设MySQL的某个库有两张表tt1
和TT1
,那么放在TiDB中肯定是会冲突的
DM的case-sensitive
参数意义是啥呢?
经实际测试,不管这个参数设置成true还是false,start-task都会提示表名冲突。
lower_case_table_names这个参数设为0,tidb就是大小写敏感了吧
db_user
(Db User)
4
这个应该是跟上游有关吧,针对fillter,假如上游有ttl,TTL两张表,在配置fillter的时候的table为ttl,而case-sensitive=false,那么ttl,TTL两张表都会同步,同步过程中就会出现同步失败的情况,因为tidb会报表已经存在,或者主键冲突等等的错,如果case-sensitive=true,那么就只会同步ttl表,同步不会报错,感觉差距在这吧
1 个赞
考试没答案
(Ti D Ber P Kfity Gq)
5
从您的咨询来看,您的上游mysql 肯定是大小写敏感的。
DM 仅仅是将数据导出来,并且使用的还是上游的binlog日志
tidb 下游数据库也必须的保持 大小写敏感才行,不然就会报错:您上面的对象已经存在的错误
###################################
但是您的tidb可能是大小写不敏感吧
对于DM从binlog提取出来的 ttl TTL 。如果将大写表名转换成小写,就会报错。可以从报错日志来看下。
考试没答案
(Ti D Ber P Kfity Gq)
6
您好:您能发下, 这个 DM链路,上游创建 大小写 表 报错的日志吗 ??
你说的这个是DM上游数据源里的配置,我这个是Task里的配置,感觉作用不一样吧
上游mysql创建大小写表没报错,dm同步的时候报表名重复
考试没答案
(Ti D Ber P Kfity Gq)
9
mysql 执行下 。 show variables like ‘%case%’; 发出来看下
db_user
(Db User)
10
感觉作用是一样的吧,都是针对路由或者筛选规则来的,不然也想不出其他用处了,按照mysql来理解的话就像是一个是作用在传输到relay-log的规则,一个是读取应用relay-log的规则
如果是这样的话,那就只能说文档描述的不清晰了
也确实想不到其他作用了
考试没答案
(Ti D Ber P Kfity Gq)
13
lower_case-_table_names =0 大小写 敏感。 源端。 所以不会报错。
您把 tidb的 参数也发下。
dbaspace
(dbaspace)
14
源端表没有忽略大小写 ,通过DM写入TIDB 需要加上case-sensitive,不然DM同步会报错
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。