插入带有归档引擎“重复键”错误的mysql表

时间:2013-08-06 19:35:11

标签: mysql archive

我正在尝试使用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;

1 个答案:

答案 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.6v5.5.32下验证),我会在MySQL上提交一个错误。