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。