mysql 自增 ID 突然变为 int 最大值问题

vm97 · 2025-3-7 09:26:20 · 1034 次点击

阿里云 RDS mysql5.7 , 一个几百行的表,突然一条插入的记录自增 ID 成了 2147483647 ,已经排除了无限循环错误写入导致的 ID 自增溢出,或者在插入时错误的带入 ID 值,还有什么可能原因么?

举报· 1034 次点击
登录 注册 站外分享
9 条回复  
rlds 小成 2025-3-7 09:33:44
你可能需要关注下这个 [img]https://pic2.ziyuan.wang/user/rainerosion/2025/03/1741311183908_c8898ad81d69c.png[/img]
rlds 小成 2025-3-7 09:34:40
咦,f 的图片咋显示的来着,,没显示。。
youngforever 初学 2025-3-7 09:35:46
用了 INSERT INTO ON DUPLICATE KEY UPDATE 或者 REPLACE INTO ,如果调用频率很高,id 也会变的很大
cheese 初学 2025-3-7 09:40:10
@rlds #2 只支持几个特定的图床,直接贴 imgur 链接,会自动解析,另外回复不支持 markdown 语法
shenjinpeng 小成 2025-3-7 09:43:31
也可以检查一下程序是不是出 bug 写入了 big int id
iyiluo 小成 2025-3-7 09:47:16
开 general log 日志,重新复现一下,看看日志里面有没有踪迹
jifengg 小成 2025-3-7 10:09:29
一种可能:之前写入过 id=2147483647 或 2147483646 的数据,又删掉了数据,但是这个表的下次自增值已经变成 2147483647 了
layxy 小成 2025-3-7 10:24:20
看下 binlog 记录
dcsuibian 小成 2025-3-7 10:42:33
我分析了一下: 首先,MySQL BUG 不太可能,5.7 又不是什么新版本,有的话早就被人发现了 其次,sb 同事插入了手动插入了一条 2147483646 的数据,然后删除,可能性也非常低 以上两种排除了以后,基本就可以认为是程序错误导致的插入 就我的经验来说最有可能的是之前插入过,然后删除或回滚了 我估计题主的技术栈是 Java+MyBatis 那出现错误的代码我觉得很有可能是这样的: for(int i=0;i
返回顶部