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

189 天前
 vm97

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

5698 次点击
所在节点    MySQL
31 条回复
skyyan
189 天前
纯 sql 吗 还是说用了 持久层框架,如果持久层框架 注意自增方式
warrenwt
189 天前
看下你的 entity 里面的 id 有没有加自增注解
4UyQY0ETgHMs77X8
189 天前
4UyQY0ETgHMs77X8
189 天前
@FlorentinoAriza #23 只是随便选了张图片展示下,可不是广告奥
irisdev
189 天前
@kphcdr 长知识了,自增 id 竟然不是按照表现有的 id 增长的,这不类似于取号器了
herm2s
189 天前
mybatis 的问题?或者谁手动设置了 AUTO_INCREMENT 的值?
gsx008com
189 天前
@Karte #11 一般就是这个
opengps
189 天前
有没有可能,某种报错一直在占用 id ,导致出现了最大值
Huelse
189 天前
@irisdev 自增 id 就是数据库维护了一个序列号表,你甚至可以改当前自增值`ALTER TABLE tbl AUTO_INCREMENT = 100;`
https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html
TeslaLyon
189 天前
结案了吗?
sagaxu
189 天前
@irisdev

当自增字段没有指定明确的值时,自增 ID 就是个计数器,包括 pgsql 的 serial 也是,每次有 insert 或 replace...时就+1 ,无论执行成功还是失败,+1 不会退回,完全不受表中实际值的影响。

当明确指定了该字段的值时,若指定值大于自增字段当前值,就更新计数器到指定值+1 ,此时是受表的现有值的影响的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1116547

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX