MySQL自增id用完了

每日一笑

母亲领着女儿来到精神病院。
母亲说:“大夫,这姑娘从一年前开始犯病,嘴里在说:‘我要下金蛋啦。’而且叭哒叭哒扇动手脚,还咯咯咯地学鸡叫!”
“我明白了。尽管她病成这样,你做母亲的却整整一年没有干涉她!”
“是呀,我想八成她真会下金蛋,所以耐心观察了一年。”

今天遇到了一个问题,当mysql中的自增id用完后再插入数据会怎样?

既然遇到这个问题,就去实践一下吧。

首先创建一个只包含自增id的数据表

create table id_test2(id int unsigned auto_increment primary key);

但是这样并没有足够的数据来使id用完,int类型最大可以达到2的32次方减1,也就是4294967295。

我们可以通过在创建表时,将初始值设置为4294967295

create table id_test(id int unsigned auto_increment primary key)  auto_increment = 4294967295;

然后插入一条数据后,其id就会是4294967295

INSERT INTO t1 VALUES(NULL)

然后再插入数据,直接报错了

4294967295这个大小在大部分场景中已经足够用了,如果服务需要经常的插入和删除的话,还是存在一些风险的。

如果int的大小不够用,可以使用bigint类型,bigint 带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。

原文地址:https://www.cnblogs.com/xjl-raynor/p/13857397.html