"'SET foreign_key_checks = 1' does not work again" 意为"'SET foreign_key_checks = 1' 再次失效了"。

18 浏览
0 Comments

"'SET foreign_key_checks = 1' does not work again" 意为"'SET foreign_key_checks = 1' 再次失效了"。

我正在使用:

  • 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 constraints(我没有精确的错误信息),然后我通过谷歌搜索并且两次找到了同样的解决方案。

好吧,我做了以下的事情:

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

那么原始的错误消息就不会再出现了。

接着我在谷歌上做了一些研究,发现了以下内容:

好的,它说:它是基于会话的

即使:

  • mysql服务器已经停止并重新启动
  • 重新打开workbench
  • 计算机重新启动

SELECT @@FOREIGN_KEY_CHECKS;返回1

原始的错误消息也不会再次出现。

因此,似乎 \'SET foreign_key_checks = 1\' 没有按照期望的那样工作,或者需要额外的配置/指令。

我希望能够随时禁用和启用外键安全约束。

admin 更改状态以发布 2023年5月21日
0
0 Comments

我曾经遇到过相似的问题。原来,在“SET foreign_key_checks = 0;”之后修改的任何行将来都不会被检查,即使在“SET foreign_key_checks = 1;”后也是如此。

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

0
0 Comments

我曾经遇到过PHPMyAdmin类似的问题。最终发现问题出在PHPMyAdmin默认添加了“FOREIGNK_KEY_CHECKS=1”。

当我使用PHPMyAdmin向服务器查询时,页面末尾的选项“启用外键检查”被勾选,导致我查询中的任何“SET FOREIGN_KEY_CHECKS=0”都没有生效。

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

0