MySQL自增主键值回溯问题

MySQL自增主键值回溯问题平时我们使用MySQL时,通常每一个表都会有一个自增主键ID,每新增一条数据,ID值就会自增1。但在8.0之前版本的MySQL中,这个自增值会存在一个回溯的问题。例如,在一个新表中插入三条主键为1、2、3的数据行,这时候用SHOWCREATETABLE命令查看该表的AUTO_INCREMENT的值是4,这是没问题的。然后把ID=3的数据行删掉,再次查询AUTO_INCREMENT的值,依然是4,这也是没问题的。但如果重启一下MySQL,这个值就会变回3,而不是4,发生了回溯。这是因为AUTO_I

大家好,又见面了,我是你们的朋友全栈君。

平时我们使用MySQL时,通常每一个表都会有一个自增主键ID,每新增一条数据,ID值就会自增1。但在8.0之前版本的MySQL中,这个自增值会存在一个回溯的问题。

例如,在一个新表中插入三条主键为1、2、3的数据行,这时候用SHOW CREATE TABLE命令查看该表的AUTO_INCREMENT的值是4,这是没问题的。

然后把ID=3的数据行删掉,再次查询AUTO_INCREMENT的值,依然是4,这也是没问题的。

但如果重启一下MySQL,这个值就会变回3,而不是4,发生了回溯。

这是因为AUTO_INCREMENT的值只存储于内存中,不会持久化到磁盘,每次启动数据库时,MySQL会通过计算max(auto_increment字段) + 1,重新作为该表下一次的主键ID的自增值。这个问题直至MySQL 8.0才修复。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149188.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 正规矩阵(酉矩阵)[通俗易懂]

    正规矩阵(酉矩阵)[通俗易懂]英文名:Unitarymatrix

  • unicodeencodeerror latin-1_gbk codec

    unicodeencodeerror latin-1_gbk codec最近在搞人工智能的东东,玩了玩词云的东西,在编写代码时,出现了一个问题。目的:统计西游记里出现的词的内容。读取西游记整本小说的内容,然后进行统计分析。代码如下:text=open(‘西游记.txt’).read()但是在执行的时候一直报错:UnicodeDecodeError:‘gbk’codeccan’tdecodebyte0x80inposition2:i…

  • JBPM(二)—JBPM工作流基本操作

    JBPM(二)—JBPM工作流基本操作流程定义的管理:将定义业务流程,部署到jbpm框架中(流程定义jpdl.xml描述文件)通过gpd插件先根据业务流程,绘制流程图(holiday.jpdl.xml和holiday.png)流程定义部署:先获得ProcessEngine对象,再获得对应Service(六个Service)ExecutionServicegetExecutionServi

  • 离线安装gcc步骤「建议收藏」

    离线安装gcc步骤「建议收藏」公司给了测试服务器,很多东西都没有,又没有联网,不能通过yum去下载,只能离线安装,本文是离线安装gcc的步骤1.下载安装包可以通过以下博客的内容去下载包出处:1.https://blog.csdn.net/yuan_ren_sheng/article/details/810215632.https://blog.csdn.net/u012373815/article/deta…

  • blend基础_blender入门

    blend基础_blender入门http://wenku.baidu.com/view/eca9ec7301f69e31433294b5.html

    2022年10月31日
  • C++ stringstream 类的用法「建议收藏」

    C++ stringstream 类的用法「建议收藏」(转自:https://blog.csdn.net/nwpu_yike/article/details/22100615)一、类型转换——数字->字符串C++stringstream类是一种十分有用的类,特别是当我们需要在程序中使用字符串和数字数据互相转换的时候。要想在程序中使用stringstream类,我们需要在源程序文件中包含头文件include<sstream&…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号