【问题标题】:Mysql auto increment resetting itself? xampMysql自动增量重置自己? xamp
【发布时间】:2023-12-31 22:22:01
【问题描述】:

大家好,希望你们能帮帮我。

我使用 xamp 作为我的 php 开发环境,并且我意识到我的自动增量有时会重置/减少自身。

也就是说,我知道我有一张大桌子,然后一两周前我删除了所有条目。今天,有了新条目,我检查了一下,第一个条目的 id 为 1,第二个的 id 为 2(此后只添加了两个)..

虽然我怀疑框架是否与此有关,但我使用的是 codeigniter。

想知道这是应该发生的事情,还是应该知道自动增量不会重置我是否应该感到安全。我之所以这样问,是因为我计划在表变得太大时将数据存档到另一个表中,并且如果以后需要存档数据,请将其原样复制到新表中。如果由于自动增量重置,id 已经存在,这显然是一个问题。

【问题讨论】:

  • 你真的DROP你的表而不是删除记录吗?

标签: php mysql auto-increment


【解决方案1】:

这是某些存储引擎的正常行为。阅读文档,您会发现这是解释的。增量算法不会在某处存储计数器值。相反,它检查当前的最高值并增加该值以获得新值。

【讨论】:

  • 例如什么引擎?我尝试了MyISAMInnoDB,但都使用了表的AUTO_INCREMENT 设置并且没有重置。
  • +1 这就是重点 -> 例如InnoDB dev.mysql.com/doc/refman/5.6/en/…
  • 感谢您的信息。但是根据链接,自动增量存储在系统启动时。因此,假设您使用的是托管公司(如主机 gator),而不是 xamp,自动增量实际上不会重置。另外,知道哪个存储引擎不会重置自动增量吗?
  • 刚刚确认,innodb在mysql重启时将auto_increment重置为最高值+1,而myisam在mysql重启时没有重置auto_increment值