'SET foreign_key_checks = 1'不再起作用

Man*_*dan 9 mysql mysql-workbench

我正在与:

  • mysql:稳定5.6.22(瓶装)
  • MySQLWorkBench 6.2

我有以下顺序

DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;
Run Code Online (Sandbox Code Playgroud)

它通过Java(JDBC)失败并通过MySQLWorkBench失败,错误消息是关于FK Child约束(我没有确切的错误消息),通过谷歌我做了一个研究,我发现了两次相同的有效解

好吧,我做了以下事情:

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;
SET FOREIGN_KEY_CHECKS=1;
Run Code Online (Sandbox Code Playgroud)

它再次起作用,只是玩,我试图再次执行

DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;
Run Code Online (Sandbox Code Playgroud)

确保SELECT @@FOREIGN_KEY_CHECKS;返回1

那么原始的错误消息不会再出现.

我再次对谷歌进行了研究,发现了以下内容:

它说: It is session-based

好吧,即使在:

  • mysql服务器停止并重新启动
  • 工作台重新开放
  • 电脑重新启动

SELECT @@FOREIGN_KEY_CHECKS;返回1

原始错误消息不再出现.

因此,似乎 'SET foreign_key_checks = 1'无法工作如何预期或需要额外的配置/指令

我希望能够随时禁用和启用该FK安全约束

小智 11

我在PHPMyAdmin遇到了类似的问题.毕竟,问题是PHPMyAdmin正在添加(默认情况下)"FOREIGNK_KEY_CHECKS = 1".

当我使用PHPMyAdming查询服务器时,在页面末尾检查了"启用外键检查"选项,因此查询中的"SET FOREIGN_KEY_CHECKS = 0"实际上都没有.

请确保您的问题的解决方案不是这样愚蠢的.;-)