mysql无法从存储引擎读取自动增量值

问题描述 投票:19回答:15

我有一个id字段的mysql表作为自动增量。

当我向表中插入值时出现错误

1467 - 无法从存储引擎读取自动增量值

show table status也向我展示了具有自动增量的字段

18446744073709551615为Auto_increment值。

什么问题可以帮助我......?

mysql database auto-increment
15个回答
15
投票

问题绝对可能是:将18446744073709551615转换为十六进制,你会发现 $ FFFF-FFFF-FFFF-FFFF。 如果您的字段是未签名的64位,则达到其限制。


0
投票

我有同样的问题,解决方案是将列从smallint(6)更改为int。


0
投票

我有问题,auto_increment设置为0,但显式设置auto_increment不起作用(保持为0)。我手动输入了一个带有ID的条目,然后将值设置为正确。


0
投票

我解决了这个问题,取消选中该字段的AUTO_INCREMENT选项,然后再次检查


-1
投票

我有同样的问题。

原因:我已使用主键和自动增量属性更改了表字段名称,因为自动增量停止工作并出现错误1467。

对我有用的是重置phpmyadmin中的主键,如下所示:

  1. 转到表格的“结构”选项卡,然后单击“索引”,如图1所示。
  2. 现在编辑主键,如图1所示。
  3. 只需单击图像2中的Go。

Image 1

Image 2

它对我有用。


-1
投票

我发现参数已启用。根据数据库专家的说法,它不应超过'1'。

在我的情况下,它被设置为'4',如下所示。

mysql> select @@ innodb_force_recovery; + ------------------------- + | @@ innodb_force_recovery | + ------------------------- + | 4 | + ------------------------- +

因此,我确实重新启动了mysql而没有在启动时传递参数,

后来我能够插入或更新表...希望它能帮助某人..


-2
投票

我有同样的问题。我有一张包含数千条记录的表格。我只是将字段的类型从int更改为bigint


26
投票

我有同样的错误但在我的情况下我在表中有大约1.5k的记录。我通过重置AUTO INCREMEN来修复它:

ALTER TABLE `table_name`  AUTO_INCREMENT = 1

14
投票

我在运行插入语句几周后开始收到此错误:

Duplicate entry '127' for key 'PRIMARY'

...即使我的桌子设置为自动增量。我进去并将auto_increment值从127更改为128然后我开始收到此错误:

1467 - Failed to read auto-increment value from storage engine

我最终发现该表最初是使用tinyint列创建的,因为ID不是标准的int ...所以基本上它无法理解大于127的数字。我将列类型切换为正确的整数,这解决了问题。

希望有人帮助:)


7
投票

就我而言,我犯了一个愚蠢的错误。我之前改变过我的桌子并将AUTO_INCREMENT列的名称从ID更改为id。因此,如果列名称区分大小写,则后续插入无法找到原始列。


5
投票

实际上,您可以简单地更改列以删除其auto_increament属性并再次将其设置为auto_increment。就我而言,这种方式确实有效。


3
投票

我也犯了同样的错误。我只是改变了表并增加了自动增量字段的大小,然后运行以下查询 -

ALTER TABLE `table_name`  AUTO_INCREMENT = 6221;

其中6221是具有自动增量的字段的最后一个值。


2
投票

我不到一个小时前第一次遇到这个错误。使用PHP MyAdmin中的SQL语句重置auto_increment失败。在寻找解决方案后,我放弃了桌子并创建了替代品。错误仍然存​​在。仔细观察发现auto_increment设置为0,即使我在创建字段时专门设置了primary_key和auto_increment。再次使用PHP MyAdmin手动将auto_increment重置为1,消除了错误。幸运的是,我只使用包含几行测试数据的3列表。


1
投票

我今天也遇到了这个问题。我有一个超过两百万行的表,并在发生此错误时尝试使用LOAD DATA添加另外140K行。我切换到MyISAM引擎,一切正常。


1
投票

我通过删除自动增量,保存表然后再次添加自动增量来修复它。

© www.soinside.com 2019 - 2024. All rights reserved.