【发布时间】: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 约束(我没有确切的错误消息),通过谷歌我做了一个研究,我发现了两次相同的有效解决方案。
- 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
原来的错误信息不会再次出现。
我再次对 Google 进行了研究,发现如下:
它说:It is session-based
好吧,即使:
- mysql 服务器停止并再次重新启动
- 工作台重新打开
- 电脑重启
而SELECT @@FOREIGN_KEY_CHECKS; 返回1
原来的错误信息不再出现。
因此似乎'SET foreign_key_checks = 1' 无法正常工作,或者需要额外的配置/指令
我希望能够随时禁用和启用该 FK 安全约束
【问题讨论】:
标签: mysql mysql-workbench