1

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

1 回答 1

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

但这因“重复键”而失败:

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 没有表现出这种行为,我在文档中找不到对此的参考。如果我是你,我会在 MySQL 提交一个错误(在v5.5.6v5.5.32下验证)。

于 2013-08-06T20:05:54.177 回答