2016-03-15 91 views
0

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

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) 

我不确定为什么会出现这个错误。任何人?

+0

的可能的复制[MySQL的无法读取从存储引擎自动递增值](http://stackoverflow.com/questions/7346934/mysql-failed-to-read-auto-increment-value-from -storage-engine) –

回答

0

尝试添加您的字段名称来插入语句,如下例所示。 正如我所看到的,在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' 
    ; 
+0

是的,像这样添加字段名称解决了问题 – Nishant

+0

INTO TABLE table1 CHARACTER SET utf8 FIELDS TERMINATED BY'|' LINES TERMINATED BY'\ n' (name,infohash,categories,info_url,download_url) – Nishant

0

auto_increment列增加到其上限18446744073709551615

0

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

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