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

 

一、简述 #

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

二、试验#

数据表定义的自增 ID,如果达到上限之后。
再申请下一个 ID 的时候,获得到的值将保持不变。
我们可以通过下面这个例子来验证一下:
1
2
3
4
5
6
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 达到上限之后,再申请时它的值就不会在改变了,继续插入数据时会导致报主键冲突错误。因此在设计数据表时,尽量根据业务需求来选择合适的字段类型。
 

posted @   Yxh_blogs  阅读(8590)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2017-12-15 Mysql多列索引经典案例
点击右上角即可分享
微信分享提示
CONTENTS