【问题标题】:Auto increment get reset to 0 at every service restart每次服务重启时自动增量重置为 0
【发布时间】:2011-11-13 15:46:45
【问题描述】:

它一直工作到现在,但是当我重新启动服务时,数据库丢失了我的表的自动增量值。这肯定是我对查询所做的事情,因为我最近没有修改我的表。会是什么?

【问题讨论】:

  • 获取数据库中所有存储过程和触发器的列表。检查它是否有可疑之处。尝试重新安装服务器看看是否有帮助
  • 无触发器,无程序,仅在服务重启时发生,如果我截断表并重新开始,它会完美运行。
  • 服务重启是指重启mysql服务器?

标签: mysql auto-increment


【解决方案1】:

这是记录在案的行为,不是错误。
当服务器启动时,它会遍历每个(InnoDB)表来确定新的 auto_increment 值应该是什么。来自http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html

只要服务器运行,InnoDB 就会使用内存中的自动增量计数器。当。。。的时候 服务器停止并重新启动,InnoDB 重新初始化每个表的计数器 首先插入到表中,如前所述。

当您部署导致表重建的 DDL 时,它会执行类似的操作,例如更改 engine -- 甚至将其更改为与之前相同的值。

【讨论】:

  • 这并不能解释为什么它会为零。
【解决方案2】:

ALTER TABLE table_name ENGINE=MyISAM

为我工作。 InnoDB 将 AI 存储在内存中,因此当 mysql 服务器重新启动时,它会重置为当前行数 + 1。所以如果你重启服务器时你的表是空的,它会被重置为1。

另一方面,MyISAM 构建良好。

【讨论】:

    猜你喜欢
    • 2011-01-02
    • 1970-01-01
    • 2014-08-14
    • 2016-03-14
    • 2021-12-17
    • 2016-05-19
    • 2013-05-17
    • 1970-01-01
    • 2017-01-02
    相关资源
    最近更新 更多