相关文章推荐
豪爽的枕头  ·  MYSQL中如何使用子查询结果作为其中一列展 ...·  2 天前    · 
一身肌肉的毛豆  ·  C++ 运算符 | 菜鸟教程·  1 年前    · 
英勇无比的铁链  ·  html表格序号自动增加_html怎么添加序 ...·  2 年前    · 
眉毛粗的滑板  ·  windows下vbs脚本添加网络打印机-阿 ...·  2 年前    · 
魁梧的汉堡包  ·  Winform自定义控件在属性窗口修改属性后 ...·  2 年前    · 
Code  ›  【建议收藏】MySQL中的自增id超出上限的问题开发者社区
mysql
https://cloud.tencent.com/developer/article/2009820
爱健身的木瓜
2 年前
作者头像
码农编程进阶笔记
0 篇文章

【建议收藏】MySQL中的自增id超出上限的问题

前往专栏
腾讯云
备案 控制台
开发者社区
学习
实践
活动
专区
工具
TVP
文章/答案/技术大牛
写文章
社区首页 > 专栏 > 码农编程进阶笔记 > 正文

【建议收藏】MySQL中的自增id超出上限的问题

发布 于 2022-05-24 16:52:04
1.4K 0
举报

在mysql中有多种自增id,除了我们日常开发中经常使用的自增主键外,还有一些其他的自增id,主要是mysql内部为了辅助其正常运行而使用的。

这些自增id,都是定义了初始值,然后不停的累加步长。对于每一种自增id,在mysql中都会定义其数据类型,以及这个数据类型所占用的字节长度,也就是说每个自增id,都是有上限的,只不过上限的大小不尽相同而已,既然自增id有上限,那么就有可能被用完,那问题来了,如果自增id用完了,会发生什么呢?

在mysql中,对于不同的自增id值达到上限后,对应的处理方式是不同的。下面我们就对mysql中,几个比较重要的自增id进行分析一下。

为了方便下文描述,我们建立如下的表结构:

CREATE TABLE `increment_id_test` (
 `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB;

一、自定义自增主键

自定义自增主键,是工作中最经常使用到的一种自增id,对于自增主键的一些细节问题可以参考你真的懂自增主键。

在表 increment_id_test 中,字段id是自增的,而且被定义成主键。id的数据类型为int,可表示的最大数值是2^32-1,也就是4294967295。为了能够让id字段快速达到这个上限,这里有两种方法:

1.直接插入一个id=4294967295 的数据行。

insert into increment_id_test values(4294967295);

2.设置autoincrement的值。

alter table increment_id_test auto_increment=4294967295;

当然也可以在建表的时候,就指定auto_increment的值为 4294967295。

两种方式的差异在于,设置auto_increment的方式,表示下次插入的数据行的id是 4294967295。

这里我们使用第一种方式做实验,相比第二种方式,可以减少一次数据插入,就可以让id达到上限。实验步骤如下:

1.插入一条id为 4294967295 的数据行


 
推荐文章
豪爽的枕头  ·  MYSQL中如何使用子查询结果作为其中一列展示_zhuzaiming2004_新浪博客
2 天前
一身肌肉的毛豆  ·  C++ 运算符 | 菜鸟教程
1 年前
英勇无比的铁链  ·  html表格序号自动增加_html怎么添加序号_gangtianyi的博客-CSDN博客
2 年前
眉毛粗的滑板  ·  windows下vbs脚本添加网络打印机-阿里云开发者社区
2 年前
魁梧的汉堡包  ·  Winform自定义控件在属性窗口修改属性后,在窗体设计器不生成代码 - 腾讯云开发者社区-腾讯云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号