当自动递增ID溢出时,MySQL会做什么?

sly*_*ete 5 mysql sql

我有一个使用MySQL作为数据库后端的django应用程序.它已经运行了几天,我已经在一些表中达到了ID 5000.

我担心当我溢出数据类型时会发生什么.

反正有没有告诉自动增量在某个时刻重新开始?我的数据非常不稳定,因此当我溢出ID时,ID 0或其附近的任何地方都无法使用.

Ava*_*ava 5

根据您是否使用无符号整数以及您正在运行的MySQL版本,您可以运行得到主键的令人讨厌的负值的溜冰场,或者(更糟糕的是)该行根本不会被插入并将抛出一个错误.

也就是说,您可以使用ALTER命令轻松更改MySQL中整数的大小/类型,以抢先阻止这种情况发生.用作主键的INT的"标准"大小是INT(11),但是绝大多数DB应用程序不需要任何接近那么大的东西.试试MEDIUMINT.

MEDIUMINT - 有符号范围是-8388608到8388607.无符号范围是0到16777215

相比于....

INT或INTEGER - 有符号范围是-2147483648到2147483647.无符号范围是0到4294967295

还有BIGINT,但说实话,如果你有一个超过20亿行的表,你可能会遇到比数据类型更大的可扩展性问题:)