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

Posted Yxh_blogs

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

Mysql对自增主键ID进行重新排序