【问题标题】:ERROR 1467 (HY000): Failed to read auto-increment value from storage engineERROR 1467 (HY000): 无法从存储引擎读取自增值
【发布时间】:2016-07-01 08:31:34
【问题描述】:

我正在尝试将数据从管道分隔文件导入 mysql。创建表工作。但是,当我尝试导入数据时,我收到此错误“错误 1467 (HY000):无法从存储引擎读取自动增量值”。 我已经在网站上检查了可能的错误,但没有任何答案。下面是我正在使用的脚本。我对 MySql 很陌生。

SELECT 'Changing database..' as '';
use test

SELECT 'Droing table if it exists' as '';
DROP TABLE IF EXISTS table1;

CREATE TABLE IF NOT EXISTS table1
(
   id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
   infohash VARCHAR(100) NOT NULL,
   categories VARCHAR(100) DEFAULT NULL,
   info_url VARCHAR(300) NOT NULL,
   download_url VARCHAR(300) DEFAULT NULL,
   PRIMARY KEY (id)
);

SHOW TABLES;

LOAD DATA  INFILE '/usr/Software/sample.txt'

    INTO TABLE table1
    CHARACTER SET utf8
    COLUMNS
        TERMINATED BY '|'
    LINES
        TERMINATED BY '\n'
    ;
SELECT 'Total rows in table' as '';
select count(*) from table1;

这是我得到的输出。

mysql> source table_creattion.sql
+---------------------+
|                     |
+---------------------+
| Changing database.. |
+---------------------+
1 row in set (0.00 sec)

Database changed
+---------------------------+
|                           |
+---------------------------+
| Droing table if it exists |
+---------------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

+----------------+
| Tables_in_test |
+----------------+
| table1         |
+----------------+
1 row in set (0.00 sec)

ERROR 1467 (HY000): Failed to read auto-increment value from storage engine
+---------------------+
|                     |
+---------------------+
| Total rows in table |
+---------------------+
1 row in set (0.00 sec)

+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

我不确定为什么会出现此错误。有人吗?

【问题讨论】:

标签: mysql


【解决方案1】:

尝试将您的字段名称添加到插入语句,如下例所示。 如我所见,在 sample.txt 上,您不必为 id 列设置值。 请分享 sample.txt 中的一些示例行以获得更好的帮助。

LOAD DATA  INFILE '/usr/Software/sample.txt'

    INTO TABLE table1 
(infohash,categories, info_url, download_url )
    CHARACTER SET utf8
    COLUMNS
        TERMINATED BY '|'
    LINES
        TERMINATED BY '\n'
    ;

【讨论】:

  • INTO TABLE table1 字符集 utf8 字段由 '|' 终止LINES TERMINATED BY '\n' (name,infohash,categories, info_url, download_url)
【解决方案2】:

auto_increment 列增加到其上限18446744073709551615

【讨论】:

    【解决方案3】:

    这是一个错误,当用户尝试在唯一键上插入重复值时。我的解决方案是,插入一个具有已定义 ID(和其他必需列)的新虚拟记录,然后将其删除。

    select max(`ID`) from `table1` into @IDmax;
    set @IDmax = @IDmax + 1;
    insert into `table1` set `ID` = @IDmax;
    delete from `table1` where `ID` = @IDmax;
    

    【讨论】:

      猜你喜欢
      • 2015-01-27
      • 2013-07-15
      • 2011-11-12
      • 2014-02-11
      • 2013-07-07
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      相关资源
      最近更新 更多