"'SET foreign_key_checks = 1' does not work again" 意为"'SET foreign_key_checks = 1' 再次失效了"。
"'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(我没有精确的错误信息),然后我通过谷歌搜索并且两次找到了同样的解决方案。
- Cannot delete or update a parent row: a foreign key constraint fails
- How to temporarily disable a foreign key constraint in MySQL?
好吧,我做了以下的事情:
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日
我曾经遇到过相似的问题。原来,在“SET foreign_key_checks = 0;”之后修改的任何行将来都不会被检查,即使在“SET foreign_key_checks = 1;”后也是如此。
在此找到:https://www.mysqltutorial.org/mysql-disable-foreign-key-checks/