我正在执行下面的查询来禁用键约束。我使用MariaDB 5.4
alter table table_name disable keys
但它会产生如下警告:table_name的表存储引擎没有此选项。Inno_DB作为引擎。我不明白为什么这个警告来了,关键约束没有被禁用。如何解决这个错误?或者是否有其他方法可以禁用键约束?
wlzqhblo1#
来自ALTER TABLE上的MariaDB文档:DISABLE KEYS将为支持此功能的存储引擎(至少是MyISAM和Aria)禁用表的所有非唯一键。换句话说,正如警告所暗示的那样,这个选项不适用于InnoDB。
ALTER TABLE
DISABLE KEYS
nxagd54h2#
如果使用InnoDB并使用来自mysqldump的带有多个enable/ disable keys语句的脚本,该脚本将抛出警告,因为这些语句不受支持。它也可能在以下线路上失败,
DROP TABLE IF EXISTS `MyTable`;
由于外键的限制。脚本可以通过在sql脚本选项卡中运行以下命令来工作(由于启用/禁用键行,仍然会有警告,但它不应该阻止脚本运行完成)。
set foreign_key_checks = OFF;
然后在运行脚本后,应重新启用外键检查
set foreign_key_checks = ON;
2条答案
按热度按时间wlzqhblo1#
来自
ALTER TABLE
上的MariaDB文档:DISABLE KEYS
将为支持此功能的存储引擎(至少是MyISAM和Aria)禁用表的所有非唯一键。换句话说,正如警告所暗示的那样,这个选项不适用于InnoDB。
nxagd54h2#
如果使用InnoDB并使用来自mysqldump的带有多个enable/ disable keys语句的脚本,该脚本将抛出警告,因为这些语句不受支持。它也可能在以下线路上失败,
由于外键的限制。
脚本可以通过在sql脚本选项卡中运行以下命令来工作(由于启用/禁用键行,仍然会有警告,但它不应该阻止脚本运行完成)。
然后在运行脚本后,应重新启用外键检查