我有一个使用MySQL作为数据库后端的django应用程序。它已经运行了几天,我已经在一些表中达到了ID 5000。
我担心当我溢出数据类型时会发生什么。
有没有告诉自动增量在某个时刻开始?我的数据非常不稳定,因此当我溢出ID时,ID 0或其附近的任何地方都无法使用。
答案 0 :(得分:5)
根据您是否使用无符号整数以及您正在运行的MySQL版本,您可以运行获取主键的负值的溜冰场,或者(更糟糕的是)该行不会被插入并会抛出错误。
也就是说,您可以使用ALTER命令轻松更改MySQL中整数的大小/类型,以抢先阻止这种情况发生。用作主键的INT的“标准”大小是INT(11),但是绝大多数DB应用程序不需要任何接近那么大的东西。试试MEDIUMINT。
MEDIUMINT - 有符号范围是-8388608到8388607.无符号范围是0到16777215
与....相比。
INT或INTEGER - 有符号范围是-2147483648到2147483647.无符号范围是0到4294967295
还有BIGINT,但说实话,你可能会遇到比你的数据类型更大的可扩展性问题,如果你有一个带有>的表,你会担心20亿行:)
答案 1 :(得分:-3)
嗯,默认的32位INT上升到大约20亿。每天5000个ID,大约1000年,直到溢出。我觉得你不用担心......