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。

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