广告
返回顶部
首页 > 资讯 > 数据库 >MySQL自增ID用完了如何解决
  • 359
分享到

MySQL自增ID用完了如何解决

2024-04-02 19:04:59 359人浏览 安东尼
摘要

本篇文章为大家展示了Mysql自增ID用完了如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先,创建一个最简单的表,只包含一个自增id,并插入一条数据。cr

本篇文章为大家展示了Mysql自增ID用完了如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

首先,创建一个最简单的表,只包含一个自增id,并插入一条数据。

create table t0(id int unsigned auto_increment primary key) ;insert  into t0 values(null);

通过show命令 show create table t0; 查看表情况

CREATE TABLE `t0` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT  CHARSET=utf8

可以发现 AUTO_INCREMENT 已经自动变成2,这离用完还有很远,我们可以算下最大当前声明的自增ID最大是多少,由于这里定义的是  intunsigned,所以最大可以达到2的32幂次方 - 1 = 4294967295

这里有个小技巧,可以在创建表的时候,直接声明AUTO_INCREMENT的初始值

create table t1(id int unsigned auto_increment primary key)   auto_increment = 4294967295;insert into t1 values(null);

同样,通过show命令,查看t1的表结构

CREATE TABLE `t1` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4294967295 DEFAULT  CHARSET=utf8

可以发现,AUTO_INCREMENT已经变成4294967295了,当想再尝试插入一条数据时,得到了下面的异常结果

17:28:03    insert into t1 values(null) Error Code: 1062. Duplicate  entry '4294967295' for key 'PRIMARY'    0.00054 sec

说明,当再次插入时,使用的自增ID还是 4294967295,报主键冲突的错误。

4294967295,这个数字已经可以应付大部分的场景了,如果你的服务会经常性的插入和删除数据的话,还是存在用完的风险,建议采用bigint  unsigned,这个数字就大了。

不过,还存在另一种情况,如果在创建表没有显示申明主键,会怎么办?

如果是这种情况,InnoDB会自动帮你创建一个不可见的、长度为6字节的row_id,而且InnoDB 维护了一个全局的  dictsys.row_id,所以未定义主键的表都共享该row_id,每次插入一条数据,都把全局row_id当成主键id,然后全局row_id加1

该全局row_id在代码实现上使用的是bigint  unsigned类型,但实际上只给row_id留了6字节,这种设计就会存在一个问题:如果全局row_id一直涨,一直涨,直到2的48幂次-1时,这个时候再+1,row_id的低48位都为0,结果在插入新一行数据时,拿到的row_id就为0,存在主键冲突的可能性。

上述内容就是mysql自增ID用完了如何解决,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL自增ID用完了如何解决

本文链接: https://www.lsjlt.com/news/58823.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL自增ID用完了如何解决
    本篇文章为大家展示了MySQL自增ID用完了如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先,创建一个最简单的表,只包含一个自增id,并插入一条数据。cr...
    99+
    2022-10-18
  • mysql自增长id用完了该如何解决
    本篇内容介绍了“mysql自增长id用完了该如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mysql自增长id用完了,怎么办?作为一...
    99+
    2023-06-29
  • 如何解决MySQL自增ID用完的问题
    本篇内容介绍了“如何解决MySQL自增ID用完的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自增id...
    99+
    2022-10-19
  • MySQL的自增ID(主键) 用完了的解决方法
    在 MySQL 中用很多类型的自增 ID,每个自增 ID 都设置了初始值。一般情况下初始值都是从 0 开始,然后按照一定的步长增加(一般是自增 1)。一般情况下,我们都是用int(11)来作为数据表的自增 ID,在 ...
    99+
    2022-05-10
    MySQL 自增ID MySQL 主键 MySQL 自增ID用完
  • mysql自增长id用完了该怎么办
    mysql自增长id用完了,怎么办? 作为一名程序员,在求职面试时,不知你有没有遇到类似这样的问题。 张工是一名java程序员,最近到一家互联网公司面试,面试官就问了他这样的一个问题...
    99+
    2022-11-13
  • Mysql自增id冲突怎么解决
    Mysql自增id冲突通常是由于插入数据时出现了并发操作导致的。为了解决这个问题,可以采取以下几种方法:1. 使用事务:在插入数据时...
    99+
    2023-10-23
    Mysql
  • mysql自增id不连续怎么解决
    这篇文章主要介绍“mysql自增id不连续怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql自增id不连续怎么解决”文章能帮助大家解决问题。 ...
    99+
    2022-10-19
  • Mysql如何设置id自增
    (1)设置自增 方案一: CREATE TABLE IF NOT EXISTS user( id INT UNSIGNED AUTO_INCREMENT, name VARCHAR(100) NOT NULL, sex VARCH...
    99+
    2023-08-17
    mysql 数据库 java linux nio
  • MySQL自增ID达到上限的解决方法
    MySQL 自增 ID 用完了怎么办?在MySQL中有很多类型的自增ID,每个自增ID都设置了初始值,然后按照一定的步长增加,只要定义了字节长度,那么就会有上限,如果达到上限再次添加,则会报主键冲突错误,解...
    99+
    2022-10-18
  • MySQL分表自增ID问题的解决方法
    这篇文章主要讲解了“MySQL分表自增ID问题的解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL分表自增ID问题的解决方法”吧! 当我们对...
    99+
    2022-10-18
  • mysql数据自增ID为2的解决方案
    目录mysql数据自增ID为2问题mysql自增id理解1. 什么是自增id2. 自增id的好处3. 自增id的坏处4. 当自增id用完了怎么办?总结mysql数据自增ID为2问题 查看配置 show variables...
    99+
    2022-12-27
    mysql数据自增ID为2 mysql自增ID mysql自增ID为2
  • 如何解决Mysql更新自增主键id遇到的问题
    这篇文章主要为大家展示了“如何解决Mysql更新自增主键id遇到的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Mysql更新自增主键id遇到的问题”这篇文章吧。为什么要更新自增id...
    99+
    2023-06-21
  • mysql自增id超大问题的排查与解决
    引言 小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入就会失败...
    99+
    2022-10-18
  • mysql id从1开始自增 快速解决id不连续的问题
    mysql id从1开始自增 解决id不连续 作为一个强迫症患者,对于表格内某些行删除之后,id不连续这个问题完全无法容忍,一开始使用 TRUNCATE TABLE tablen...
    99+
    2022-11-12
  • MySQL 自增 ID 默认从 1 开始,如何设置自增 ID 从 0 开始
        MySQL 是一种关系型数据库,它是世界上最流行的关系型数据库之一。在 MySQL 中,自增是一种非常有用的功能,它可以自动给主键赋值,并保证每个主键是唯一的。然而,许多人不知道的是,MySQL 默认情况下从 1 开始自增,这并不总...
    99+
    2023-10-22
    mysql 数据库
  • mysql如何设置自增id的条件
    mysql如何设置自增id的条件?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql设置自增id的条件的方法:1、在建...
    99+
    2022-10-18
  • MybatisPlus使用@TableId主键id自增长无效如何解决
    这篇文章主要介绍“MybatisPlus使用@TableId主键id自增长无效如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MybatisPlus使用@TableId主键id自增长无效如何解...
    99+
    2023-07-06
  • 浅谈MySQL中的自增主键用完了怎么办
    在面试中,大家应该经历过如下场景 面试官:"用过mysql吧,你们是用自增主键还是UUID?"    你:"用的是自增主键"     面试官:"为什么是自增主键?" &nbs...
    99+
    2022-05-21
    MySQL 自增主键用完 MySQL 自增主键
  • 如何解决mybatis-plus添加数据时id自增问题
    小编给大家分享一下如何解决mybatis-plus添加数据时id自增问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mybatis-plus添加数据时id自增问题mybatis-plus插入数据,id自增列变的很长.比如...
    99+
    2023-06-26
  • 如何在MySQL现有表中添加自增ID?
    当在MySQL数据库中,自增ID是一种常见的主键类型,它为表中的每一行分配唯一的标识符。在某些情况下,我们可能需要在现有的MySQL表中添加自增ID,以便更好地管理和索引数据。在本文中,我们将讨论如何...
    99+
    2023-09-21
    mysql 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作