我正在使用一个id字段作为自动增量的mysql表。
当我向表中插入值时出现错误
1467 - 无法从存储引擎读取自动增量值
此外show table status
向我显示自动增量字段
18446744073709551615
为Auto_increment值。
任何人都能帮助我的问题是什么??
答案 0 :(得分:27)
我有同样的错误但在我的情况下我在表中有大约1.5k的记录。 我通过重置AUTO INCREMEN来修复它:
ALTER TABLE `table_name` AUTO_INCREMENT = 1
答案 1 :(得分:14)
问题绝对可能是:将 18446744073709551615 转换为十六进制,你会发现
的 $ FFFF-FFFF-FFFF-FFFF 即可。
如果您的字段是无符号的64位,则达到其限制。
答案 2 :(得分:13)
我在运行插入语句几周后开始收到此错误:
Duplicate entry '127' for key 'PRIMARY'
...即使我的桌子设置为自动增量。我进去并将auto_increment值从127更改为128然后我开始收到此错误:
1467 - Failed to read auto-increment value from storage engine
我最终发现该表最初是用tinyint列创建的,用于ID而不是标准的int ...所以基本上它无法理解大于127的数字。我将列类型切换为正确的整数,这解决了问题。
希望能帮助某人:)
答案 3 :(得分:7)
就我而言,我犯了一个愚蠢的错误。我之前更改过我的表格,并将AUTO_INCREMENT
列的名称从ID
更改为id
。因此,如果列名称区分大小写,则后续插入无法找到原始列。
答案 4 :(得分:5)
实际上,您只需更改列即可删除其auto_increament
属性,并再次将其设置为auto_increment
。在我这边,这种方式确实有效。
答案 5 :(得分:3)
我也犯了同样的错误。我只是改变了表并增加了自动增量字段的大小,然后运行以下查询 -
ALTER TABLE `table_name` AUTO_INCREMENT = 6221;
其中6221是Auto_increment字段的最后一个值。
答案 6 :(得分:2)
我在不到一个小时前第一次遇到这个错误。使用PHP MyAdmin中的SQL语句重置auto_increment失败。在寻找解决方案后,我放弃了桌子并创建了替代品。错误仍然存在。仔细观察发现auto_increment设置为0,即使我在创建字段时专门设置了primary_key和auto_increment。再次使用PHP MyAdmin手动将auto_increment重置为1,消除了错误。幸运的是,我只使用了包含几行测试数据的3列表。
答案 7 :(得分:1)
我今天也遇到了这个问题。我有一个超过两百万行的表,并在发生此错误时尝试使用LOAD DATA添加另外140K行。我切换到MyISAM引擎,一切正常。
答案 8 :(得分:1)
我通过删除自动增量,保存了表,然后再次添加自动增量来解决了这个问题。
答案 9 :(得分:0)
今天,当我尝试将记录插入名为mytablename的表中时遇到相同的错误:
ERROR 1467 (HY000): Failed to read auto-increment value from storage engine
在表中,我只有52269条记录,max(id)= 52269。 我已经尝试在mysql命令控制台下执行以下命令,但是什么也没有发生,错误仍然存在:
#
# set AUTO_INCREMENT = max(id) + 1: not work:
#
ALTER TABLE mytablename AUTO_INCREMENT = 52270;
我必须找到另一个解决方案。当我这样做时:
SHOW TABLE STATUS FROM mydatabase WHERE `name` LIKE 'mytablename' ;
它表明我的Auto_Increment值为0,这显然是错误的,它必须大于或等于1。
我修改了表中的所有列,例如:
ALTER TABLE mytablename CHANGE COLUMN mycharfield mycharfield varchar(255) DEFAULT NULL AFTER id;
我再次执行show table status命令,
Auto_Increment值已自动更改为52270,这是个好值。
此后一切...
答案 10 :(得分:0)
很容易修复它。截断表格并再次上传数据,错误消失。
答案 11 :(得分:0)
我的解决方法是更改表并将其重命名为orignal_backup并保存,然后再次将其重命名为orignal_,这个技巧对我有用。
答案 12 :(得分:0)
我已解决此问题,请取消选中该字段的AUTO_INCREMENT选项,然后再次检查
答案 13 :(得分:0)
我遇到了问题,将auto_increment设置为0,但是显式设置auto_increment无效(保持为0)。 我手动输入了带有ID的条目,然后此值被正确设置。
答案 14 :(得分:0)
我遇到了同样的问题,解决方案是将列从smallint(6)更改为int。
答案 15 :(得分:-1)
我发现参数已启用。它不应该超过' 1'根据数据库专家......
在我的情况下,它被设置为' 4',如下所示。
的MySQL>选择@@ innodb_force_recovery; + ------------------------- + | @@ innodb_force_recovery | + ------------------------- + | 4 | + ------------------------- +
因此,我确实重启了mysql而没有在启动时传递参数,
后来我能够插入或更新表格...希望它能帮助某人......
答案 16 :(得分:-1)
我遇到了同样的问题。
原因:我已使用主键和自动增量属性更改了表格字段的名称,因为自动增量已停止工作且出现错误1467.
对我有用的是重置phpmyadmin中的主键,如下所示:
答案 17 :(得分:-2)
我有同样的问题。我有一张包含数千条记录的表格。我只是将字段的类型从int更改为bigint