2

我在使用 Engine=ARCHIVE 创建一个简单表时遇到错误,它迫使我对主键列使用 auto_increment,这是我不想要的。(Mysql 5.6)。

例如:

创建表 ar_my_table (
        COL_1 BIGINT UNSIGNED NOT NULL COMMENT '我的第一列',
        ...
        主键 (COL_1)

) 引擎 = 存档;

上面的错误是“ERROR 1030 (HY000): Got error -1 from storage engine”,

但是如果我对 PK 列使用 AUTO_INCREMENT 或者不放 PK,则创建表(如下所示)

创建表 ar_my_table (
        COL_1 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '我的第一列',
        ...
        主键 (COL_1)

) 引擎 = 存档;

或者

创建表 ar_my_table (
        COL_1 BIGINT UNSIGNED NOT NULL COMMENT '我的第一列',
        ...

) 引擎 = 存档;

(顺便说一句,我尝试在没有 PK 的情况下创建表并使用 ALTER TABLE ADD CONSTRAINT ...但 alter 语句失败并出现同样的错误)。

如果我想要 PK 索引,归档引擎中是否必须使用 Auto_Increment。Mysql 参考文档没有说明它(除了你可以有 PK 和没有其他索引)并且可以有 Auto_increment 暗示 Auto_increment 是可选的。

还有其他人面临同样的问题吗?没有 Auto_increment 的 PK 的任何解决方案?

感谢帮助或指导,谢谢

4

1 回答 1

0

我有同样的问题,在 MySQL 文档中没有任何内容,但我在 MariaDB 知识库中找到了它;

这不是错误,而是限制的一部分。键可以是 PRIMARY KEY(也可以是普通的非唯一索引),但无论哪种方式,它都必须位于 AUTO_INCREMENT 列上。

问题_ _

于 2015-01-11T16:15:50.700 回答