【 TiDB 使用环境】测试
【遇到的问题:问题现象及影响】显示主键冲突,不兼容该怎么解决额,附图有mysql建表语句
【附件:截图/日志/监控】
看报错你数据有冲突啊
1 个赞
目标端是空表恢复的吗
有数据可以覆盖吗
1 个赞
逻辑导入吗,是不是目的表不为空,导致主键冲突
如果两边表结构一致的话,有没有可能是大小写的问题?mysql是大小写敏感,tidb是大小写不敏感,这样mysql导入到tidb的时候,也可能出现主键冲突的情况。
他这个应该不是,主键是int 类型
你去看看原表的这条记录
刚注意到是自增主键,大家一般导数据的时候,自增主键列也会导么?
还有一个可能,源端表有id=0的
id=0导出的时候也会生成一个新的id吧
如果是迁移指定id的话,应该不会自增,会使用指定的值吧。
前段时间我碰到的一个问题,也是迁移过来发现主键冲突,因为源端id=0,解决方法是NO_AUTO_VALUE_ON_ZERO这个sql mode
https://docs.pingcap.com/zh/tidb/stable/sql-mode#sql-mode-列表如下
1 个赞
重复数据就是主键和唯一键重复,tidb 表 id字段改为 AUTO_RANDOM?
是不是多个数据源啊?或者是之前迁移了一部分,后来又进行了全量?
1 个赞
重复数据,你就选呗,或者替换,或者跳过。。。
如果是多数据源到同一目标端,还是根据业务逻辑来确定ETL方案吧。
主键冲突你只能选择跳过或者删除目标表的记录,再或者修改一下主键值
你数据的的问题。没有主键,数据冲突了