MySQL 的自增 ID 用完了,怎么办?

Posted 泡^泡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 的自增 ID 用完了,怎么办?相关的知识,希望对你有一定的参考价值。

简述

mysql 中用很多类型的自增 ID,每个自增 ID 都设置了初始值。一般情况下初始值都是从 0 开始,然后按照一定的步长增加。在 MySQL 中只要定义了这个数的字节长度,那么就会有上限。

试验

数据表定义的自增 ID,如果达到上限之后。再申请下一个 ID 的时候,获得到的值将保持不变。我们可以通过下面这个例子来验证一下:

create table `test` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4294967295;
 
insert into `test` values (null);


可以从这个结果看的出来第一次插入数据的时候 ID 值还是 4294967295,

当第二次插入数据,则报主键冲突错误了,
这说明 ID 值达到上限之后,就不会再变化了。
画中话:如果预计到 ID 值可能会被用完,则应该考虑选择 bigint unsigned 类型。

总结

数据库表的自增 ID 达到上限之后,再申请时它的值就不会在改变了,继续插入数据时会导致报主键冲突错误。因此在设计数据表时,尽量根据业务需求来选择合适的字段类型。

以上是关于MySQL 的自增 ID 用完了,怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

面试官问:MySQL的自增 ID 用完了,怎么办?

MySQL的自增ID用完了,怎么办?

面试官问:MySQL 的自增 ID 用完了,怎么办?

mysql 自增长id可以到多大

MySQL的自增id用尽时的解决方案

Day909.MySQL 不同的自增 id 达到上限以后的行为 -MySQL实战