'SET foreign_key_checks = 1' does not work again

匿名 (未验证) 提交于 2019-12-03 01:33:01

问题:

I am working with:

  • mysql: stable 5.6.22 (bottled)
  • MySQLWorkBench 6.2

I have the following sequence

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

It fails when I work through Java (JDBC) and fails through the MySQLWorkBench too, the error message is about the FK Child constraints (I don't have the exact error message), well through Google I did a research and I have found the same valid solution twice.

Well I did the following:

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; 

Again it works, just playing, I tried to execute again

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

Being sure that SELECT @@FOREIGN_KEY_CHECKS; returns 1

Well the original error message does not appears again.

Again I did a research on Google and I found the following:

Well it says: It is session-based

Well, even when:

  • mysql server is stopped and restarted again
  • workbench re-opened
  • Computer re-started

and SELECT @@FOREIGN_KEY_CHECKS; returns 1

The original error message does not appears again.

Therefore seems 'SET foreign_key_checks = 1' does not work how is expected or an extra configuration/instruction is needed

I want be able to disable and enable that FK security constraint anytime

回答1:

I had a similar problem with PHPMyAdmin. After all, the problem was that PHPMyAdmin was adding (by default) the "FOREIGNK_KEY_CHECKS=1".

When I was querying the server with PHPMyAdming the option "Enable foreign key checks" was checked at the end of the page, so none of the "SET FOREIGN_KEY_CHECKS=0" inside my query was actually working.

Please, make sure the solution to your problem is not something so silly like this. ;-)



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!