【问题标题】:MYSQL auto increment becomes corruptMYSQL 自动增量损坏
【发布时间】:2015-04-25 21:12:12
【问题描述】:

由于某种原因,我遇到了一个问题,一段时间后我的桌子“损坏”了,我猜我在哪里得到了这个错误:

mysql failed to read auto-increment value from storage engine

我已经找到了运行以下查询的解决方案:

ALTER TABLE `users`  AUTO_INCREMENT = 1

糟糕的是,到目前为止,它在 3 周内随机发生了 3 次,而我没有更改表格中的任何内容。我发现的唯一原因是从无法注册的用户那里听到的:/

这是为注册新用户而运行的查询,您可以看到它显然没有插入 user_id

INSERT INTO users (user_name, user_lastip, user_password_hash, user_email, user_activation_hash, user_registration_ip, user_registration_datetime) 
VALUES(:user_name, :user_lastip ,:user_password_hash, :user_email, :user_activation_hash, :user_registration_ip, now())

这是我的表格的快速截图:

(在此开始发生之前,我将 user_ID 长度设置为 11,我尝试在上次发生此错误时将其设置为 255,但没有帮助)

有谁知道是什么原因造成的或如何解决这个问题?我显然不是唯一一个遇到这个问题的人,所以我希望有一个合乎逻辑的解释

【问题讨论】:

  • 试试这个命令,看看能不能解决问题,repair table users quick
  • 您也可以将您的问题发布到 DB Exchange dba.stackexchange.com
  • @AbhikChakraborty 谢谢!我想它有效,但我能找到的唯一方法是等待一段时间,看看它是否会再次发生。感谢您的帮助:) 我想知道为什么会发生这种情况
  • 可能有很多原因,其中一个问题可能是驱动器已满,但很难说到底是什么。可以尝试查看 mysql 错误日志以获取更多详细信息。

标签: php mysql auto-increment


【解决方案1】:

检查 autoincrement_offset。 尝试删除表,然后创建一个新表。

【讨论】:

  • 就像我说的,我已经“修复”了 3 次,但我需要知道是什么导致了它。完全重做桌子似乎有点没用,因为它会再次发生?
  • @Crecket 似乎您的增量值大于最大字段长度。
  • 它现在的长度设置为 255,而我的表中只有大约 3000 个用户,使用的最后一行大约是 3100 左右。除非它随机添加了一个巨大的数量,这不可能吗?
  • @Crecket Mysql 不会添加随机的巨大值。您可以将 int 更改为 bigint。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
相关资源
最近更新 更多