MySql:为归档引擎创建表,强制 auto_increment

Posted

技术标签:

【中文标题】MySql:为归档引擎创建表,强制 auto_increment【英文标题】:MySql: create table for archive engine, forcing auto_increment 【发布时间】:2014-02-01 06:38:08 【问题描述】:

我在使用 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 有什么解决方案?

感谢帮助或指导,谢谢

【问题讨论】:

【参考方案1】:

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

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

Q, A

【讨论】:

以上是关于MySql:为归档引擎创建表,强制 auto_increment的主要内容,如果未能解决你的问题,请参考以下文章

mysql级联删除更新

MySQL 表设计案例

mysql数据库被破坏,只剩下ibd文件时如何恢复

MYSQL存储引擎InnoDB(三十五):临时表空间

请教ogg中复制进程rep01延迟问题

手动实现MySQL归档