【问题标题】:'SET foreign_key_checks = 1' does not work again'SET foreign_key_checks = 1' 不再起作用
【发布时间】:2015-04-13 10:34:57
【问题描述】:

我正在与:

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

我有以下顺序

DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;

当我通过 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;

又可以了,刚玩,我又试了执行

DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;

确保SELECT @@FOREIGN_KEY_CHECKS; 返回1

原来的错误信息不会再次出现。

我再次对 Google 进行了研究,发现如下:

它说:It is session-based

好吧,即使:

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

SELECT @@FOREIGN_KEY_CHECKS; 返回1

原来的错误信息不再出现。

因此似乎'SET foreign_key_checks = 1' 无法正常工作,或者需要额外的配置/指令

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

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    我遇到了类似的问题。事实证明,您在“SET foreign_key_checks = 0;”之后修改的任何行即使在“SET foreign_key_checks = 1;”之后也不会被检查

    在这里找到:https://www.mysqltutorial.org/mysql-disable-foreign-key-checks/

    【讨论】:

      【解决方案2】:

      我在使用 PHPMyAdmin 时遇到了类似的问题。毕竟,问题在于 PHPMyAdmin 正在添加(默认情况下)“FOREIGNK_KEY_CHECKS=1”。

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

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

      【讨论】:

      • 它有帮助!当我在 mysql 控制台中执行相同操作时,它可以工作
      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 2010-11-21
      • 1970-01-01
      • 2016-08-07
      • 2014-07-28
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多