【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.4
业务表
CREATE TABLE reportstatelog_info
(
log_id
int(11) NOT NULL AUTO_INCREMENT ,
machixxnereport_id
int(11) DEFAULT NULL ,
shopxx_id
int(11) DEFAULT NULL ,
saleplacxxeno
varchar(20) COLLATE utf8_general_ci DEFAULT NULL ,
report_state
int(11) DEFAULT NULL ,
create_time
datetime DEFAULT NULL ,
PRIMARY KEY (log_id
)
/*T![clustered_index] CLUSTERED */
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci
/*T![auto_id_cache] AUTO_ID_CACHE=1 */
之前没问题,今天突然报主键冲突
select max(log_id) from reportstatelog_info
40826765
但是insert 自增id的取值是40823765,导致问题,出问题期间tidb节点没有宕机,无法复现问题,不知道具体原因
1 个赞
随缘天空
(Ti D Ber Ivw R7o Pj)
2
log_id已经超过最大值了,无法再往数据库存值了,主键冲突了
zhanggame1
(Ti D Ber G I13ecx U)
5
不连续是会跳跃,但是不会重复。我遇到过这个问题,回跳很多。
zhanggame1
(Ti D Ber G I13ecx U)
6
不知道什么原因,我遇到2次,解决简单
方法1 手工插入一条id大于表里面最大值的数据,就正常了。
方法2 使用ALTER TABLE tablename force auto_increment=1234;
感谢,我与你的问题一致,我们版本是6.5 你的版本是7.5 说明升级也没法解决问题。auto_id_cache=1 就是解决跳号的问题,但是现在问题更严重 主键冲突导致 数据无法写入
zhanggame1
(Ti D Ber G I13ecx U)
14
3 个赞
RenlySir
(Renly Sir)
17
修复使用 AUTO_ID_CACHE=1 的自增列时,由于并发冲突导致自增 ID 分配报错的问题 #50519 @tiancaiamao
https://github.com/pingcap/tidb/issues/50519
6.5.8修复了这么一个问题
zhanggame1
(Ti D Ber G I13ecx U)
18
建表加 AUTO_ID_CACHE=1正常情况就不跳跃了,老的版本性能影响大
aytrack
(Aytrack)
21
集群有做过备份恢复么?
执行 show table reportstatelog_info next_row_id;
看看 NEXT_GLOBAL_ROW_ID 的结果呢
Hello 可以看看是否升级到 6.5.8 这个问题还依然存在?
反馈给研发之后,发现暂时无法复现你的问题。