2013-07-04 38 views
7

我有自動增量,MySQL中的主鍵稱爲ID,它是INT。 隨着我的應用程序的增長,我得到更多的用戶,他們正在做更多的條目。當我的INT達到其最大值2 147 483 647時會發生什麼? 我可以切換到BIGINT嗎?當MySQL中的自動增加主鍵達到最大值時會發生什麼

+1

你爲什麼不首先使用BIGINT? –

+0

也許是一個重複的問題http://stackoverflow.com/questions/2615417/what-happens-when-auto-increment-on-integer-column-reaches-the-max-value-in-data – rmarimon

+0

那麼導致我的應用程序是現在非常小,我認爲這足以使用INT。 這是非常類似的問題。謝謝 – FosAvance

回答

4

MySQL official documentation指出:

當列到達數據類型的上限,下 嘗試以生成序列號失敗。如果可能,請使用UNSIGNED 屬性以允許更大的範圍。

是的,你可以切換auto_increment值的類型。在這一點上,文件建議使用:

[...]爲AUTO_INCREMENT列 是大到足以容納你需要的最大序列值的最小整數數據類型。

4

是的,你可以改變表格,並從INT更改爲BIGINT沒有問題。

此外,您可能需要更改數據類型無論它是作爲一個FK

+3

+1是的,值得一提的是,你應該在升級他們參考的PK之前更改FK數據類型*。否則,您可以創建不能被子表引用的PK值。 –

0

我想和大家分享一個親身經歷我只是有這個問題。

使用Nagios + Check_MK + NDOUtils。 NDOUtils將所有檢查存儲在名爲nagios_servicechecks的表中。主鍵是auto_increment int signed

當這個限制被區分時,MySQL會發生什麼?那麼,在我的情況下,MySQL刪除了所有的記錄,但最後一個。桌子現在幾乎是空的。每次插入新記錄時,都會刪除舊記錄。

我不這樣做的原因,但事實是我失去了我的所有記錄。

與Icinga(不是Nagios)一起使用的IDOUtils修復了由bigint更改int的問題。

相關問題