创建唯一性索引报错,出错信息看不懂

【TiDB 使用环境】生产环境
【TiDB 版本】V7.1.3
【操作系统】Centos7.5
【问题复现路径】一张表的唯一性索引字段顺序有问题,想调整一下字段顺序,所以准备先新建一个新的唯一性索引,然后删除老的

【遇到的问题:问题现象及影响】

  1. 在唯一性字段清单没有变化,只是字段顺序变化的情况下, 新建唯一性出错(原来的唯一性并未删除)

  2. 出错内容看不懂,详细如下:
    [err=“[kv:1062]Duplicate entry ‘%-.64s’ for key ‘%-.192s’”]

    以上错误信息目视和数据本身毫无关系,和索引名称也完全对不上

再补充下:尝试两次均失败,且错误信息一致,上面这个错误信息又没法定位问题,如果是数据确实存在重复,那么现在表上的唯一性就有bug, 如果数据不重复,那么新建又因为什么原因出错?

是不是有什么唯一索引的重复键值

这是新建时报的错,还是新建后插入报的错?

你新建一个空表,把原来的唯一索引删掉,建新的唯一性索引,然后把老数据查过来会报错吗?

原来的唯一性并未移除,数据无重复

直接新建唯一性报错

我十几亿数据,没法这么搞

测试了下,7.1.1,原有唯一索引删不删除,也不影响新增一个唯一索引
应该是哪里出了点内部错误

你的新的字段排序规则是什么?
我有遇到过类似问题
老的字段唯一索引是不是_bin这个类型的,排序规则是大小写敏感的,
utf8_general_ci这个是大小写不敏感,加唯一索引有可能引起报错。
大小写敏感问题 - #10,来自 zhaokede.

这个提示不明显是有对应的issue的,https://github.com/pingcap/tidb/issues/49940,但是看起来也是回填报错,应该还是数据重复吧

没有新字段,只是字段顺序变化了, 如果是字符集问题,那么老的唯一性肯定也会有问题。
我原来的唯一性是 F1+F2+F3 ,现在新建一个 F1+F3+F2 ,准备把原来的替换掉

哦,我理解成COLLATE了。

经彬彬老师提醒,v7.1.6修复了

  • 修复添加唯一索引时可能遇到 duplicate entry 的问题 #56161 @tangenta

后来把这张表的增量给停了,然后就建成功了

版本问题哈

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