在尝试执行以下操作后,我从MySQL(Percona)收到“无法从存储引擎读取自动增量值”错误:
LOAD DATA LOCAL INFILE
我一直在尝试在stackoverflow和google上找到答案,但答案并没有解决我案例中的问题/错误。
以下显示Auto_increment为1:
show table status like 'my_table_name';
将自动增量值设置为下一个值或1将无法解决:
ALTER TABLE `my_table_name` AUTO_INCREMENT = 1;
删除自动递增id列并重新创建它并没有解决它。
删除表并重新创建它并没有解决它。
删除数据库并重新创建它并没有解决它。
销毁所有数据并重建我的docker开发环境并没有解决它。
检查表扩展名为“OK”:
CHECK TABLE distributor_users EXTENDED;
它是表中唯一的自动递增值。
这是我用来创建表的方法:
CREATE TABLE `my_table_name` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`x0` varchar(191) DEFAULT NULL,
`x1` varchar(4) DEFAULT NULL,
`x2` varchar(191) DEFAULT NULL,
`x3` varchar(191) DEFAULT NULL,
`x4` varchar(191) DEFAULT NULL,
`x5` varchar(191) DEFAULT NULL,
`x6` DATE DEFAULT NULL,
`x7` int(10) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `x0` (`x0`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
它可能是什么?任何开始关注的领导都非常受欢迎!
答案 0 :(得分:0)
我通过添加到我的查询中解决了这个问题:
SET id = NULL
新查询现在看起来像这样:
LOAD DATA LOCAL INFILE '$csv_file_location' INTO TABLE $destination_table
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
IGNORE 1 LINES
(x0,x1,x2,x3,x4,x5,x6,x7)
SET id = NULL;
虽然我的查询以前没有它。
MySQL试图将csv文件中的第一列放入数据库的第一列。将auto_increment的列设置为NULL解决了它。