tidb 集群在线更改分区表

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】7.5.1
【复现路径】对在线几千万条数据的表进行分区
表结构
CREATE TABLE test (
col1 INT NOT NULL,
col2 INT NOT NULL,
col3 INT NOT NULL,
UNIQUE KEY (col1, col2),
UNIQUE KEY (col1, col3)
);

更改语句
ALTER TABLE test PARTITION BY KEY(col1) PARTITIONS 4;
【遇到的问题:问题现象及影响】
在线修改执行过程中 会中断
报错 ERROR 1062 (23000) at line 1: Duplicate entry ‘col1_value–col12_value’ for key ‘test.col1’

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

校验过表里报错的数据吗?

这是主键冲突报错吧?

他设定的是联合主键,单列信息肯定有冲突了… 数据有重复的…

我看文档并没有说分区字段不能重复啊,
https://docs.pingcap.com/zh/tidb/stable/partitioned-table#key-分区

查了 只有一条

unique多列只要多列唯一就行了 而且我只是分表 并没有修改主键

是有一个类似bug,https://github.com/pingcap/tidb/issues/48838,但是7.5.1版本已经修好了

也没有修改唯一索引

我用的版本就是7.5.1 不知道是不是在线数据插入的Duplicate 导致的分表错误 我这边没停机维护分表 之前试了别的表都是可以正常分的 就这个不行

可以先看下这张表是否存在数据和索引不一致情况,https://docs.pingcap.com/zh/tidb/stable/sql-statement-admin-check-table-index

试了 完全一致 这个线上表我没修改过唯一索引

去提bug吧

打个卡

等版本升级吧,tidb确实还有好多地方不太好用


Duplicate entry。。。问题在这里

这不是重复了么?

别的表也是key分区,分区字段也是int吗?