inconsistent index 唯一索引查询时报错数据不一致

  • 【TiDB 版本】:v4.0.6
  • 【问题描述】:

查询语句:
SELECT *FROM qcc_cnt_tender WHERE CompanyKeywords = ‘’;

报错:
inconsistent index uk_CompanyKeywords_id handle count 62 isn’t equal to value count 61

ADMIN CHECK INDEX qcc_cnt_tender uk_CompanyKeywords_id

ADMIN CHECK INDEX 结果:
TABLE COUNT 75342348 != INDEX(uk_CompanyKeywords_id) COUNT 75342347

表结构:
CREATE TABLE qcc_cnt_tender (
Sn bigint(20) NOT NULL AUTO_INCREMENT,
Id varchar(50) DEFAULT NULL,
CompanyKeywords varchar(50) DEFAULT NULL COMMENT ‘公司KeyNo’,
IsValid tinyint(4) DEFAULT NULL,
CreateDate datetime DEFAULT CURRENT_TIMESTAMP,
UpdateDate datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
Province varchar(10) DEFAULT NULL COMMENT ‘省份’,
Type tinyint(4) DEFAULT NULL COMMENT '0:其他关联公司 1:招标/采购单位 2:中标单位/投标单位/中标候选人单位 3:代理单位 ',
Month int(11) DEFAULT NULL COMMENT ‘招投标月份 6位数 如202007’,
IsWtf tinyint(4) DEFAULT 0 COMMENT ‘0:投标单位,1:中标单位,2:中标候选人 该字段在type=2生效’,
IsAgency tinyint(4) DEFAULT 0 COMMENT ‘是否是代理单位 0:不是,1:是’,
PubTime bigint(20) DEFAULT 0 COMMENT ‘发布时间(单位:秒)’,
PRIMARY KEY (Sn),
KEY idex_4 (UpdateDate),
UNIQUE KEY uk_CompanyKeywords_id (CompanyKeywords,Id),
KEY idx_id (Id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1385555055;

我这边打算重新创建一个索引替换掉。

这个是什么原因引起的,有什么办法可以避免么?

请问,重建后一致了吗? 出错前,有过什么异常吗?比如down机之类的

重新创建一个索引,把有问题的索引删除掉数据就一致了。

之前没有过什么异常情况。

麻烦确认一下那之前 TiDB 日志里有没有 2PC failed commit key after primary key committed 或是 PessimisticLockRolledBack 这样的错误日志

2种错误都有

建议升级到 4.0.9 ,应该是这个 bug https://github.com/pingcap/tidb/pull/21689

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