我有一个id字段的mysql表作为自动增量。
当我向表中插入值时出现错误
1467 - 无法从存储引擎读取自动增量值
show table status
也向我展示了具有自动增量的字段
18446744073709551615
为Auto_increment值。
什么问题可以帮助我......?
问题绝对可能是:将18446744073709551615转换为十六进制,你会发现 $ FFFF-FFFF-FFFF-FFFF。 如果您的字段是未签名的64位,则达到其限制。
我有同样的问题,解决方案是将列从smallint(6)更改为int。
我有问题,auto_increment设置为0,但显式设置auto_increment不起作用(保持为0)。我手动输入了一个带有ID的条目,然后将值设置为正确。
我解决了这个问题,取消选中该字段的AUTO_INCREMENT选项,然后再次检查
我发现参数已启用。根据数据库专家的说法,它不应超过'1'。
在我的情况下,它被设置为'4',如下所示。
mysql> select @@ innodb_force_recovery; + ------------------------- + | @@ innodb_force_recovery | + ------------------------- + | 4 | + ------------------------- +
因此,我确实重新启动了mysql而没有在启动时传递参数,
后来我能够插入或更新表...希望它能帮助某人..
我有同样的问题。我有一张包含数千条记录的表格。我只是将字段的类型从int更改为bigint
我有同样的错误但在我的情况下我在表中有大约1.5k的记录。我通过重置AUTO INCREMEN来修复它:
ALTER TABLE `table_name` AUTO_INCREMENT = 1
我在运行插入语句几周后开始收到此错误:
Duplicate entry '127' for key 'PRIMARY'
...即使我的桌子设置为自动增量。我进去并将auto_increment值从127更改为128然后我开始收到此错误:
1467 - Failed to read auto-increment value from storage engine
我最终发现该表最初是使用tinyint列创建的,因为ID不是标准的int ...所以基本上它无法理解大于127的数字。我将列类型切换为正确的整数,这解决了问题。
希望有人帮助:)
就我而言,我犯了一个愚蠢的错误。我之前改变过我的桌子并将AUTO_INCREMENT
列的名称从ID
更改为id
。因此,如果列名称区分大小写,则后续插入无法找到原始列。
实际上,您可以简单地更改列以删除其auto_increament
属性并再次将其设置为auto_increment
。就我而言,这种方式确实有效。
我也犯了同样的错误。我只是改变了表并增加了自动增量字段的大小,然后运行以下查询 -
ALTER TABLE `table_name` AUTO_INCREMENT = 6221;
其中6221是具有自动增量的字段的最后一个值。
我不到一个小时前第一次遇到这个错误。使用PHP MyAdmin中的SQL语句重置auto_increment失败。在寻找解决方案后,我放弃了桌子并创建了替代品。错误仍然存在。仔细观察发现auto_increment设置为0,即使我在创建字段时专门设置了primary_key和auto_increment。再次使用PHP MyAdmin手动将auto_increment重置为1,消除了错误。幸运的是,我只使用包含几行测试数据的3列表。
我今天也遇到了这个问题。我有一个超过两百万行的表,并在发生此错误时尝试使用LOAD DATA添加另外140K行。我切换到MyISAM引擎,一切正常。
我通过删除自动增量,保存表然后再次添加自动增量来修复它。