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