返回顶部
首页 > 资讯 > 数据库 >如何解决Mysql更新自增主键id遇到的问题
  • 521
分享到

如何解决Mysql更新自增主键id遇到的问题

2023-06-21 21:06:16 521人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“如何解决Mysql更新自增主键id遇到的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Mysql更新自增主键id遇到的问题”这篇文章吧。为什么要更新自增id

这篇文章主要为大家展示了“如何解决Mysql更新自增主键id遇到的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Mysql更新自增主键id遇到的问题”这篇文章吧。

为什么要更新自增id

我是因为历史业务上的坑,导致必须更新一批id,且为了避免冲突需要将id扩大多少倍进行更新,因为我这个表的数据数量不高,属于高读低写的情况,所以就简单的扩大了1000

问题

mysql中如果我们把自增主键更新为更大的值(例如现在自增id最大值是1000,你更新id=49这个记录到id=1049),Mysql并不会把表的自增值修改为更新后的值,在某些情况下,如DDL,重启等之后,业务开始报错,这时如果不知道当前操作可能会误认为是当前业务操作的问题,实则是因为更新id埋下的坑(主键冲突)
如下图:

图1:更新前原始数据

如何解决Mysql更新自增主键id遇到的问题

执行更新语句

update test set id = 10 where id = 2;

图2:更新后的数据

如何解决Mysql更新自增主键id遇到的问题

执行新的插入语句

insert test (name) values ('DDDd')

图3:插入的新数据

如何解决Mysql更新自增主键id遇到的问题

想必这时大家也都看出问题了,更新后可能刚开始没有问题,但当自增id追上你更新的最大值后,id冲突在所难免了。。。

如何解决

如果是个人测试库,不怎么重要,可以重启数据库
2.当然线上数据库是没法按照1这种方式搞了,除非你很任性(还需要dba陪着你任性),,,这时可以尝试指定id插入一条业务上无意义的数据,例如软删除的数据,(我的案列表没有软删除标识,大家可以意会下)

insert test (id,name) values (20,'eeee');

操作后如图:

如何解决Mysql更新自增主键id遇到的问题

在执行下面SQL语句,对照结果

insert test (name) values ('ffff');

如何解决Mysql更新自增主键id遇到的问题

此时自增id已从最大值开始自增了

找资料发现,这个BUG在2005年就被提出了,因为性能以及场景很少的没有被修复;这个问题在MySQL 8.0.11中表现正常。

以上是“如何解决Mysql更新自增主键id遇到的问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 如何解决Mysql更新自增主键id遇到的问题

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

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

猜你喜欢
  • 如何解决Mysql更新自增主键id遇到的问题
    这篇文章主要为大家展示了“如何解决Mysql更新自增主键id遇到的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Mysql更新自增主键id遇到的问题”这篇文章吧。为什么要更新自增id...
    99+
    2023-06-21
  • Mysql更新自增主键id遇到的问题
    目录为什么要更新自增id问题如何解决本是一个自己知道的问题,还是差点踩坑(差点忘了,还好上线前整理上线点时想起来了),特此记录下来 为什么要更新自增id 我是因为历史业务上的坑,导致...
    99+
    2024-04-02
  • 如何解决mysql的int型主键自增问题
    这篇文章主要介绍“如何解决mysql的int型主键自增问题”,在日常操作中,相信很多人在如何解决mysql的int型主键自增问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决mysql的int型主键自...
    99+
    2023-06-20
  • 如何解决MySQL自增ID用完的问题
    本篇内容介绍了“如何解决MySQL自增ID用完的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自增id...
    99+
    2024-04-02
  • MySQL主键自增会遇到的坑及解决方法
    目录1. 为什么不用 UUID2. 主键自增的问题2.1 数据插入的三种形式2.2 innodb_autoinc_lock_mode2.3 实践3. 小结在上篇文章中,松哥和小伙伴们分享了 mysql 的聚簇索引,也顺便...
    99+
    2023-04-20
    MySQL主键自增 MySQL主键
  • 解决mysql的int型主键自增问题
    引入 我们在使用mysql数据库时,习惯使用int型作为主键,并设置为自增,这既能够保证唯一,使用起来又很方便,但int型的长度是有限的,如果超过长度怎么办呢? 暴露问题 我们先创建...
    99+
    2024-04-02
  • mybatis plus新增数据获取主键id的问题怎么解决
    这篇文章主要介绍了mybatis plus新增数据获取主键id的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatis plus新增数据获取主键id的问题怎么解决文章都会有...
    99+
    2023-07-05
  • MySQL的自增ID(主键) 用完了的解决方法
    在 MySQL 中用很多类型的自增 ID,每个自增 ID 都设置了初始值。一般情况下初始值都是从 0 开始,然后按照一定的步长增加(一般是自增 1)。一般情况下,我们都是用int(11)来作为数据表的自增 ID,在 ...
    99+
    2022-05-10
    MySQL 自增ID MySQL 主键 MySQL 自增ID用完
  • MySQL分表自增ID问题的解决方法
    这篇文章主要讲解了“MySQL分表自增ID问题的解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL分表自增ID问题的解决方法”吧! 当我们对...
    99+
    2024-04-02
  • mysql id自增冲突问题怎么解决
    解决MySQL ID自增冲突问题有以下几种方法: 使用AUTO_INCREMENT:在创建表的时候,可以设置ID字段为AUTO_...
    99+
    2024-04-09
    mysql
  • mysql自增id超大问题的排查与解决
    引言 小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入就会失败...
    99+
    2024-04-02
  • Oracle更换为MySQL遇到的问题及解决
    目录迁移工具应用改造添加mysql8.0驱动包修改数据源配置对象改造问题汇总问题:本地远程连接mysql数据库,报10060登录异常问题:Navicat 连接MySQL8出现2059...
    99+
    2024-04-02
  • MybatisPlus使用@TableId主键id自增长无效如何解决
    这篇文章主要介绍“MybatisPlus使用@TableId主键id自增长无效如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MybatisPlus使用@TableId主键id自增长无效如何解...
    99+
    2023-07-06
  • 详解mybatis插入数据后返回自增主键ID的问题
    1.场景介绍: ​开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知...
    99+
    2024-04-02
  • pt-archiver和自增主键的问题怎么解决
    今天小编给大家分享一下pt-archiver和自增主键的问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言pt-...
    99+
    2023-06-30
  • 如何解决MySQL使用中遇到的问题
    这篇文章给大家分享的是有关如何解决MySQL使用中遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。sql_mode=only_full_group_by引起group b...
    99+
    2024-04-02
  • 电脑系统更新遇到问题怎么解决
    这篇文章主要介绍“电脑系统更新遇到问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“电脑系统更新遇到问题怎么解决”文章能帮助大家解决问题。一、回退系统点击左下角开始菜单,选择设置在设置界面 ...
    99+
    2023-06-27
  • mysql id从1开始自增 快速解决id不连续的问题
    mysql id从1开始自增 解决id不连续 作为一个强迫症患者,对于表格内某些行删除之后,id不连续这个问题完全无法容忍,一开始使用 TRUNCATE TABLE tablen...
    99+
    2024-04-02
  • MySQL自增ID用完了如何解决
    本篇文章为大家展示了MySQL自增ID用完了如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先,创建一个最简单的表,只包含一个自增id,并插入一条数据。cr...
    99+
    2024-04-02
  • mysql主键冲突的问题如何解决
    本篇内容介绍了“mysql主键冲突的问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明忽略冲突保留原始记录。冲突更新冲突后部分字...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作