当MySQL中的自动增量主键达到最大值时会发生什么

时间:2013-07-04 22:12:53

标签: mysql int primary-key auto-increment

我有自动增量,MySQL中的主键叫做ID,它是INT。 随着我的应用程序的增长,我收到更多用户,他们正在制作更多条目。当我的INT达到最大值2 147 483 647时会发生什么? 我可以切换到BIGINT吗?

3 个答案:

答案 0 :(得分:4)

MySQL official documentation表示:

  

当列达到数据类型的上限时,下一个   尝试生成序列号失败。使用UNSIGNED   属性,如果可能允许更大的范围。

是的,您可以切换auto_increment值的类型。在这一点上,文档建议使用:

  

[...] AUTO_INCREMENT列的最小整数数据类型   它足够大,可以保存你需要的最大序列值。

答案 1 :(得分:4)

是的,您可以更改表格并从INT更改为BIGINT而不会出现问题。

此外,您可能需要将数据类型更改为FK

答案 2 :(得分:0)

我想分享一下我刚才的个人经历。

使用Nagios + Check_MK + NDOUtils。 NDOUtils将所有检查存储在名为nagios_servicechecks的表中。主键是auto_increment int signed

当此限制为范围时,MySQL会发生什么?好吧,在我的情况下,MySQL删除了所有记录,但最后一个。桌子现在几乎是空的。每次插入新记录时,旧记录都将被删除。

我不知道为什么会这样,但事实是我丢失了所有记录。

与Icinga(不是Nagios)一起使用的IDOUtils修复了这个问题,由bigint改变了int。