mariadb “Table Storage Engine Doesn't have this option”ALTER Query中的错误

htzpubme  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(277)

我正在执行下面的查询来禁用键约束。我使用MariaDB 5.4

alter table table_name disable keys

但它会产生如下警告:
table_name的表存储引擎没有此选项。
Inno_DB作为引擎。我不明白为什么这个警告来了,关键约束没有被禁用。
如何解决这个错误?或者是否有其他方法可以禁用键约束?

wlzqhblo

wlzqhblo1#

来自ALTER TABLE上的MariaDB文档:
DISABLE KEYS将为支持此功能的存储引擎(至少是MyISAM和Aria)禁用表的所有非唯一键。
换句话说,正如警告所暗示的那样,这个选项不适用于InnoDB。

nxagd54h

nxagd54h2#

如果使用InnoDB并使用来自mysqldump的带有多个enable/ disable keys语句的脚本,该脚本将抛出警告,因为这些语句不受支持。它也可能在以下线路上失败,

DROP TABLE IF EXISTS `MyTable`;

由于外键的限制。
脚本可以通过在sql脚本选项卡中运行以下命令来工作(由于启用/禁用键行,仍然会有警告,但它不应该阻止脚本运行完成)。

set foreign_key_checks = OFF;

然后在运行脚本后,应重新启用外键检查

set foreign_key_checks = ON;

相关问题