Force drop mysql omijając ograniczenie klucza obcego

Próbuję usunąć wszystkie tabele z bazy danych z wyjątkiem jednej, a kończy się na następującym błędzie:

Nie można usunąć lub zaktualizować wiersza nadrzędnego: ograniczenie klucza obcego nie powiedzie się

Oczywiście mogłem spróbować i błąd, aby zobaczyć, jakie są te kluczowe ograniczenia i ostatecznie usunąć wszystkie tabele, ale chciałbym wiedzieć, czy istnieje szybki sposób, aby wymusić upuszczenie wszystkich tabel(ponieważ będę mógł ponownie wstawić te, których nie chcę usunąć).

Google skierowało mnie na jakąś stronę, która zasugerował następującą metodę:

mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;

Krótka odpowiedź brzmi, że tak naprawdę nie zadziałało, ponieważ otrzymałem ten sam błąd, podczas gdy byłem w stanie usunąć więcej tabel. Widziałem na Stack Overflow sposoby, aby uzyskać wszystkie klucze obce połączone z pewną tabelą, ale to zbyt czasochłonne, chyba że skrypt to wszystko (co jest wykonalne w przypadku, gdy nie ma innej opcji)

Baza danych jest 4.1 więc nie mogę używać DROP DATABASE

Pomysły?
Author: Brian Tompsett - 汤莱恩, 2010-02-20

5 answers

Ponieważ nie jesteś zainteresowany przechowywaniem żadnych danych, wyrzuć całą bazę danych i utwórz nową.

 -15
Author: Otávio Décio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-19 23:53:44

To może być przydatne dla kogoś, kto kończy tutaj z wyszukiwania. Upewnij się, że próbujesz upuścić tabelę, a nie widok.

SET foreign_key_checks = 0;
-- Drop tables
drop table ...
-- Drop views
drop view ...
SET foreign_key_checks = 1;

SET foreign_key_checks = 0 SET foreign_key_checks = 1 jest ustawione na off, a następnie SET foreign_key_checks = 1 jest ustawione z powrotem na off. Podczas gdy kontrole są poza tabelami można upuścić, kontrole są następnie włączane z powrotem, aby zachować integralność struktury tabeli.

 327
Author: PAT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-07 15:03:37

Jeśli używasz phpmyadmin to ta funkcja już istnieje.

  • Wybierz tabele, które chcesz upuścić
  • z listy rozwijanej na dole listy tabele wybierz opcję drop
  • zostanie otwarta nowa strona z checkboxem na dole "Foreign key check", odznacz to.
  • Potwierdź usunięcie, akceptując "tak".
 14
Author: Ali Azhar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-09 14:44:59

Możesz użyć następujących kroków, jego pracował dla mnie, aby upuścić tabelę z ograniczeniem, rozwiązanie już wyjaśnione w powyższym komentarzu, właśnie dodałem zrzut ekranu dla tego- Tutaj wpisz opis obrazka

 5
Author: srinivas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-02 15:46:42

Drop baza danych istnieje we wszystkich wersjach MySQL. Ale jeśli chcesz zachować strukturę tabeli, oto pomysł

Mysqldump --no-data --add-drop-database --add-drop-table-hHOSTNAME-uUSERNAME-p > dump.sql

To jest program, a nie polecenie mysql

Następnie zaloguj się do mysql i

Zrzut Źródła.sql;

 3
Author: MindStalker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-20 00:55:21