我正在尝试使用mysql存档引擎存档一些文件。我正在使用此查询来插入文件内容:
insert into test_table (id,arch) values (123,'FILE_CONTENT')
插入2条记录后,我从mysql中获取表中不存在的密钥的“重复密钥”错误。我检查了5次,但记录不存在。我为重复的id选择了count(*),结果为0。
我用innodb引擎检查了相同的代码,它工作正常。谁能告诉我存档引擎的问题是什么?
编辑:
我的表信息是
CREATE TABLE `test_table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`arch` mediumtext,
PRIMARY KEY (`id`)
) ENGINE=ARCHIVE AUTO_INCREMENT=100175977 DEFAULT CHARSET=utf8mb4;
答案 0 :(得分:1)
您似乎在ARCHIVE
引擎中发现了一个错误。只要您尝试插入一个AUTO_INCREMENT
列的值小于该表的AUTO_INCREMENT
属性的记录,插入就会失败。
这很好用:
CREATE TABLE test_table1 (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
) ENGINE=ARCHIVE AUTO_INCREMENT=123; -- notice the AUTO_INCREMENT value
INSERT INTO test_table1 (id) value (123); -- ok
但是这个“Duplicate key”失败了:
CREATE TABLE test_table2 (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
) ENGINE=ARCHIVE AUTO_INCREMENT=124; -- notice the AUTO_INCREMENT value
INSERT INTO test_table2 (id) value (123); -- duplicate key
MyISAM和InnoDB没有表现出这种行为,我在文档中找不到对此的引用。如果我是你(在v5.5.6和v5.5.32下验证),我会在MySQL上提交一个错误。