如何使InnoDB表在服务器重启时不重置自动增量?

2024-01-02

我的开发机器上运行的是 MySQL 5.5.37。 我使用 innodb 表。面临下一个问题 - 服务器重新启动后自动增量重置。

Found 自动锁模式 http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_autoinc_lock_mode,设置为0,但没有帮助。

SHOW VARIABLES命令显示 autoinc_lock_mode 的值 0。

我做什么:

select max(id) from tablex; // 11, autoincrement is 12
insert into tablex values ('foo');
select max(id) from tablex; // 12, autoincrement is 13
delete from tablex where id > 11; // autoincrement is 13

然后我重新启动服务器......并且......(击鼓)

show create table tablex; // autoincrement 12 instead of 13

我做错了什么? :(

// UPD

我必须使用 MyISAM 表。谢谢大家的回复/评论。


在 InnoDB 中,自动增量值不是表元数据的一部分,并且会在每次服务器重新启动时重置。

InnoDB使用以下算法来初始化自增 表 t 的计数器包含AUTO_INCREMENT列名为ai_col:服务器启动后,第一次插入表t, InnoDB 执行与此语句等效的操作:

SELECT MAX(ai_col) FROM t FOR UPDATE

; InnoDB 增加值 由语句检索并将其分配给列和 表的自动增量计数器。默认情况下,该值为 加一。该默认值可以被覆盖auto_increment_increment配置设置。

如果表为空,InnoDB 使用值 1。此默认值可以是 由 auto_increment_offset 配置设置覆盖。

在服务器可执行文件的生命周期中,它存储在特殊的结构中,但在服务器重新启动之间不会保留:

如果为 InnoDB 表指定 AUTO_INCREMENT 列,则该表 InnoDB数据字典中的句柄包含一个特殊的计数器,称为 用于分配新值的自动递增计数器 专栏。该计数器仅存储在主存储器中,而不存储在磁盘上。

您设置的变量定义了不同会话同时访问此结构的方式,而不是其生命周期。

如果您想在服务器重新启动之间保留自动增量值,您应该将其保存在不受事务控制的表中(例如MyISAM or Archive)在每次写入时并在服务器重新启动时从表中重置它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使InnoDB表在服务器重启时不重置自动增量? 的相关文章

随机推荐

  • 如何使用 JQuery 动态创建输入元素来实现 keyup 函数?

    我不明白为什么下面的代码不起作用 JSFiddle 链接 http jsfiddle net JpwpM 1 document ready function addInput var limit 30 function addInput v
  • 3 / 2 = 1.0?真的吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 整数除法 如何产生双精度数 https stackoverflow com questions 3144610 java integer division how do you produc
  • 有没有可以发出 LLVM 字节码的 Javascript 引擎?

    我已经搜索了一段时间 但找不到任何发出 LLVM 字节码的引擎 但不知怎的 我无法相信没有这样的引擎 恕我直言 JXcore 将是您前进的最佳选择 当他们从 V8 转换为 LLVM 时 这是他们到达版本 2 时的目标 根据他们的路线图 然后
  • 如何在 Shiny 应用程序中更新 selectModUI 中的传单地图?

    我想更新selectModUI来自mapedit包针对不同的leaflet使用时的地图Shiny 下面是一个工作示例 library tidyverse library shiny library sf library leaflet li
  • 虚拟的概念

    我对 CPP 很陌生 正在学习后期绑定多态性 根据我所阅读和理解的内容 virtual 关键字用于后期绑定 它在编译时内部创建一个由 vptr 指向的 vtable 所以 例如 class BASE public virtual void
  • C++ 如何管理依赖项(例如使用 github 中的库)

    我对 C 世界很陌生 所以请原谅我提出这样一个虚拟问题 我用谷歌搜索了一下 但找不到正确的答案 我的问题相当简单 我应该如何在 C 世界中使用库 例如在 Java 中 有maven and gradle为了这个任务 在Python中 我使用
  • Ruby - 获取下一个夏令时更改

    我知道有一种方法可以确定某个时间是否是夏令时 Time now dst 但是有没有办法告诉我们下一个夏令时更改的日期 例如 谷歌返回Sunday November 12015 年下一次夏令时变更 由于这些日期是基于其他值 例如您正在使用的时
  • Springfox Swagger:无法解析指针:/definitions/Instant

    我们有一个 SpringBoot 项目 并且使用 Springfox Swagger 来生成 API 文档 有一个响应类包含 private Collection
  • 将我的登录凭据存储在 redux-react 中

    我想将我的登录凭据存储在 redux react 中 我附加了几行代码 问题的一部分 sksignup js import React Component from react import useState from react impo
  • 大虾PDF-如何获取文本框的高度

    我有一个包含动态文本的 formatted text box 当没有给出具体尺寸时 盒子似乎可以很好地扩展 问题是它似乎没有将光标移动到框的底部 因此我的文本与 formatted text box 中的文本重叠 如果我可以确定文本框的高度
  • AlarmManager Android 日常

    我正在尝试制定一个时间表 它应该每天下午 1 点或 2 点运行 目前我只能让它每 10 秒或 10 分钟运行一次 Intent myIntent new Intent AndroidAlarmService this MyAlarmServ
  • 以编程方式生成请求验证令牌

    从一个空的 MVC 项目开始 这是我的Startup cs using Microsoft AspNetCore Builder using Microsoft AspNetCore Hosting using Microsoft Exte
  • Couchbase 文档日期搜索 - DateTime.Now()

    我在 CB 中有一份文档 其中有两个日期 开始日期和结束日期 比方说 产品的价格折扣 10 折扣从今天开始到下周五结束 我怎样才能从CB获得今天有有效折扣的所有文件 我做了一个视图 其中包含以下内容 var dt new Date 得到今天
  • Richardson-Lucy 反卷积可以恢复潜在内核吗?

    我知道理查森 露西反卷积是为了恢复潜在图像 但假设我们有一个噪声图像和原始图像 我们能找到引起转变的内核吗 下面是一个 MATLAB 代码理查森 露西反卷积 http en wikipedia org wiki Richardson E2
  • OS X Server + GIT 与 SSH 集成失败并出现权限被拒绝错误

    我的 GIT 服务器托管在单独的 Linux 服务器上 我有 SSH RSA 密钥没有密码 我能够使用 Xcode 连接到 GIT 服务器 并且所有操作都可以通过 Xcode 5 0 2 在源代码管理中正常工作 我在本地计算机上安装了 OS
  • 为什么 String.length() 是一个方法?

    如果 String 对象是不可变的 因此显然不能改变它的长度 为什么length 一种方法 而不是简单地public final int length比如数组中有什么 它只是一个 getter 方法 还是进行某种计算 只是想看看这背后的逻辑
  • Apple 如何查找电子邮件中的日期、时间和地址?

    在 iOS 电子邮件客户端中 当电子邮件包含日期 时间或位置时 文本将成为超链接 只需点击链接即可创建约会或查看地图 它不仅适用于英语电子邮件 也适用于其他语言 我喜欢这个功能 并且想了解他们是如何做到的 最简单的方法是使用许多正则表达式并
  • EF6 急切加载相关实体的单个属性

    在 EF6 中 我有一个实体客户 具有实体地址的导航属性 地址实体包含属性 城市 我可以急切地加载地址实体 同时获取所有客户 如下所示 dbSet Customers Include customer gt customer Address
  • 从 HttpWebRequest 下载时缺少某些元素?

    我正在使用 httpwebrequest 从给定的 url 下载数据 但很少有元素没有响应 Dim Request As HttpWebRequest CType WebRequest Create https www royalmail
  • 如何使InnoDB表在服务器重启时不重置自动增量?

    我的开发机器上运行的是 MySQL 5 5 37 我使用 innodb 表 面临下一个问题 服务器重新启动后自动增量重置 Found 自动锁模式 http dev mysql com doc refman 5 1 en innodb par