11

在mysql中插入数据时出现此错误:

错误号:1467 无法从存储引擎读取自增值

我现在不知道如何解决这个问题,请任何帮助将不胜感激。

4

10 回答 10

9

经过一番搜索,我找到了答案,它解决了我的问题。

运行这个 sql 查询它将解决问题

 ALTER TABLE `YOUR_TABLE`  AUTO_INCREMENT =1
于 2013-07-17T04:12:16.720 回答
6

对kiddingmu的回答添加一点评论:这不仅是位数的问题,而且还涉及数据类型的范围。如果该列是 INT(11),则 11 表示 11 位用于显示;但这并没有解除INT只能在有符号时编码范围 -2147483648:2147483647 和无符号时 0:4294967295 的约束。

因此:对于 INT(11) 列,AUTO_INCREMENT 为 10000000000 将起作用;90000000000 的 AUTO_INCREMENT 不会,尽管它是 11 位数字。

如果需要更大的范围,则应使用另一种类型,例如BIGINT

于 2015-07-22T08:09:21.133 回答
5

我也收到了这条消息。我的问题是我的表没有按索引排序。尝试使用以下内容:

ALTER TABLE  `YOUR-TABLE` ORDER BY  `index` ;
于 2013-12-18T17:01:29.450 回答
4

对此行为的一种可能解释是自动增量值已达到数据类型的最大值,数据库引擎无法将其加一。

我建议你检查当前值。一种相对简单的方法是运行 a SHOW CREATE TABLE mytable;,表定义将显示当前值。(您也可以查询 information_schema.tables 视图,以获取相同的信息。)

于 2013-07-17T04:12:04.830 回答
1

As spencer7593 says, the autoincrement value has reached the maximum value for the datatype

I just came to the problem.

use the command SHOW CREATE TABLE tablename;, I get

table name {
`id` int(11) NOT NULL AUTO_INCREMENT,
 ......
}ENGINE=InnoDB AUTO_INCREMENT=100000000000 DEFAULT CHARSET=utf8 

You will see the length of 100000000000 is 12, beyond the limit 11.

于 2014-09-11T08:30:07.720 回答
0

**对我来说,导致错误的是自动增量 ID(列) **我解决它的方法是删除(删除)ID 列并再次添加它。

于 2021-05-19T11:44:35.747 回答
0

在将 ID 列更改为 id 并导出我的数据库之后,我遇到了同样的问题,所以我只是将列切换回 ID,然后再次切换回 id,之后一切正常。在 laravel 中使用 elequent orm,它需要列 ID,而我有列 ID,这就是我首先更改它的原因

于 2018-12-05T15:08:08.050 回答
0

正确检查您的数据库结构。我也遇到过这个问题,但是我发现数据库结构有一些错误。修复结构后,问题得到解决。

于 2016-01-22T10:26:02.110 回答
0

此错误的另一种可能性是您已达到 ID 字段中的最大值(通常是 INT)。当我们的 ID 值接近 4294967295 时,我们遇到了这个错误。为了解决这个问题,我们最终不得不从表中删除 ID。此答案中提到了各种 INT 字段:https ://stackoverflow.com/a/5634147/4573630

于 2018-03-08T18:58:29.227 回答
-3
ps aux | grep mysql 
sudo kill (your pid) 
/etc/init.d/mysql restart
于 2017-03-29T15:52:12.190 回答