我有一个mysql表,大约有2,000,000个条目,主键是自动递增的。然而,在某一点上,自动增量值突然从它(大约2,000,000)跳到最大整数值(2,147,483,647)。不用说,此表中的所有后续插入都失败了。当我注意到它时,我将主键类型从int更改为bigint,因此它现在可以正常工作。
所以我的问题是,为什么会发生这种情况?是否有任何预防措施可以避免将来发生这种情况?
答案 0 :(得分:7)
失败的插入仍然会导致自动增量列增加。如果你的程序进入无限循环的失败,它可能会导致达到限制。
也可以通过编程方式将自动增量设置为特定值。
ALTER TABLE yourtable AUTO_INCREMENT = 12345;
答案 1 :(得分:0)
这样做的一个原因可能是 -
如果您在自动增量列中输入了随机数,则可能是因为auto_increment
仅按升序运行。因此,当您插入接近最大限制的数字时,它很快就会达到最大限制,您无法输入任何其他内容。