MySQL 的自增 ID 用完了,怎么辦?


 

一、簡述 

在 MySQL 中用很多類型的自增 ID,每個自增 ID 都設置了初始值。一般情況下初始值都是從 0 開始,然后按照一定的步長增加。在 MySQL 中只要定義了這個數的字節長度,那么就會有上限。
 

二、試驗

數據表定義的自增 ID,如果達到上限之后。
再申請下一個 ID 的時候,獲得到的值將保持不變。
我們可以通過下面這個例子來驗證一下:
create table `test` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4294967295;

insert into `test` values (null);
 
 

 

可以從這個結果看的出來第一次插入數據的時候 ID 值還是 4294967295,

當第二次插入數據,則報主鍵沖突錯誤了,
這說明 ID 值達到上限之后,就不會再變化了。
畫中話:如果預計到 ID 值可能會被用完,則應該考慮選擇 bigint unsigned 類型。
 

三、總結

數據庫表的自增 ID 達到上限之后,再申請時它的值就不會在改變了,繼續插入數據時會導致報主鍵沖突錯誤。因此在設計數據表時,盡量根據業務需求來選擇合適的字段類型。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM