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