8

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

4

3 回答 3

5

MySQL官方文档指出:

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

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

[...] AUTO_INCREMENT 列的最小整数数据类型,它大到足以容纳您需要的最大序列值。

于 2013-07-04T22:15:40.823 回答
5

是的,您可以毫无问题地更改表并从 INT 更改为 BIGINT。

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

于 2013-07-04T22:16:09.480 回答
0

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

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

当这个限制在一定范围内时,MySQL 会发生什么?好吧,就我而言,MySQL 删除了除最后一条之外的所有记录。桌子现在几乎是空的。每次插入新记录时,都会删除旧记录。

我不知道为什么会发生这种情况,但事实是我丢失了所有记录。

IDOUtils 与 Icinga(不是 Nagios)一起使用,修复了通过 bigint 更改 int 的问题。

于 2015-11-26T18:29:13.410 回答