Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'SET foreign_key_checks = 1' does not work again

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.

  • Cannot delete or update a parent row: a foreign key constraint fails
  • How to temporarily disable a foreign key constraint in MySQL?

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 appear again.

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

  • mysql SET FOREIGN_KEY_CHECKS

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 appear 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

like image 380
Manuel Jordan Avatar asked Feb 12 '15 15:02

Manuel Jordan


1 Answers

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. ;-)

like image 80
Juanmi Taboada Avatar answered Nov 15 '22 17:11

Juanmi Taboada