mysql的自增id 用完了怎麼辦?

mysql的自增id 用完了怎麼辦?

create table test_auto_increment_id(id int UNSIGNED auto_increment PRIMARY KEY,name VARCHAR(255));

執行sql語句

這個時候還沒有什麼數據

insert into test_auto_increment_id (id,name) VALUES(null,'liuyuanyuan')

插入一條數據

 

這明顯不行啊,一條一條插入到啥時候了

最大當前聲明的自增ID最大是多少,由於這裏定義的是intunsigned,所以最大可以達到2的32冪次方 - 1 = 4294967295

可以取巧

create table test_auto_increment_id2(id int UNSIGNED auto_increment PRIMARY KEY  ,name VARCHAR(255)) auto_increment = 4294967295;

執行insert into test_auto_increment_id2 (id,name) VALUES(null,'liuyuanyuan');

再插入一條

報錯1062

[SQL]insert into test_auto_increment_id2 (id,name) VALUES(null,'liuyuanyuan');
[Err] 1062 - 

https://blog.csdn.net/xc_zhou/article/details/80952409

1062爲主鍵衝突

4294967295,這個數字已經可以應付大部分的場景了,如果你的服務會經常性的插入和刪除數據的話,還是存在用完的風險,建議採用bigint unsigned,這個數字就大了。

bigint(19)應該用於大數據量場景吧

id int:id的存放是int類型 可以爲負數

id int unsigned:id的存放是int類型,但是不能爲負數。

auto_increment:自動編碼,從正數開始,不會有負數,使用其的列不能插入數據。

bigint 帶符號的範圍是-9223372036854775808到9223372036854775807。無符號的範圍是0到18446744073709551615。
int  普通大小的整數。帶符號的範圍是-2147483648到2147483647。無符號的範圍是0到4294967295。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章