MySQL 自动增量失败

MySQL 自动增量失败

我有一张表,其中有一列主键和 int(11) 数据类型的自动增量。

当我尝试插入该表时,出现以下错误。 无法从存储引擎查询读取自动增量值

当我重新启动 MySQL 服务时,它运行正常。

我确信这不是“自动增量数字超出”的问题,因为当我尝试从外部插入时,它可以正确插入。

这是自动增量的问题还是其他的问题。

答案1

基本上这是 MySQL 中的一个错误,它导致了这个问题,但解决方法很简单。当表的自动增量值超出限制时,就会发生此问题。

只需在 MySQL 中运行此 SQL 查询即可修复该错误。

修改表table_name AUTO_INCREMENT =1

Table_name 是您在插入数据时发现错误的表的名称。即使表中有记录,也不要担心 Auto_Increment 值。

答案2

我在具有 bigint(20) 键的表上看到了相同的错误消息,并查看了输出

mysql>show table status like 'my_big_table';

这显示了:

Auto_increment: 0

但事实应该是:

Auto_increment: 2157452851

(因为插入的最后一行有一个键值 2157452850)没有解释为什么 Auto_increment 的值为 0,但它阻止了我们的应用程序的插入。

我尝试更改ALTER TABLEAuto_increment 值,但显然整个表都将被重建,而对于这种大小的表来说,这将花费几个小时,所以我取消了更改。

我发现的解决方案是明确添加具有下一个键值的行:

mysql> INSERT INTO `my_big_table` VALUES (2157452851,22808084,71,36376,'2013-03-16 15:09:55','2013-03-16 15:07:18','2013-03-16 15:09:55','Sent',NULL,7426);
Query OK, 1 row affected (0.03 sec)

这修正了 Auto_index 值。

mysql> show table status like 'my_big_table'\G
Auto_increment: 2157452852

希望这能够帮助其他人。

答案3

当我尝试插入该表时,出现以下错误。 无法从存储中读取自动递增值引擎查询

这可能是一个 MySQL Bug(#35602#42566)。 尝试解决方法。

答案4

在运行于 Windows 7 64 位上的 mysql 版本为 5.1.30 的 wamp 上,它不起作用。通过运行 alter table,它会发生一些事情(我看到更改的行),但值没有修复,因此刷新后它返回为空。神秘地从键中删除 auto_increment 并将其设置回来,返回 auto_increment 值。可能是 64 位问题,但希望有人能通过将 ID 键重置为非 auto_increment 并设置回来,节省数小时来解决这个问题!

相关内容