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 用完了,怎么办?的主要内容,如果未能解决你的问题,请参考以下文章