Próbuję usunąć wszystkie tabele z bazy danych z wyjątkiem jednej i kończy się następującym błędem:
Nie można usunąć ani zaktualizować wiersza nadrzędnego: ograniczenie klucza obcego kończy się niepowodzeniem
Oczywiście mógłbym próbować i popełniać błędy, aby zobaczyć, jakie są te kluczowe ograniczenia i ostatecznie usunąć wszystkie tabele, ale chciałbym wiedzieć, czy istnieje szybki sposób na wymuszenie usunięcia wszystkich tabel (ponieważ będę mógł ponownie wstawić te, które nie chcę usunąć).
Google skierowało mnie do witryny, która zasugerowała następującą metodę:
mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
Krótka odpowiedź brzmi: tak naprawdę nie pomogło, ponieważ otrzymałem ten sam błąd, podczas gdy mogłem usunąć więcej tabel. Widziałem w Stack Overflow sposoby na uzyskanie wszystkich kluczy obcych połączonych z określoną tabelą, ale jest to zbyt czasochłonne, chyba że skryptuję wszystko (co jest wykonalne w przypadku, gdy nie ma innej opcji)
Baza danych to 4.1, więc nie mogę jej używać DROP DATABASE
Pomysły?
źródło
Odpowiedzi:
Ponieważ nie chcesz przechowywać żadnych danych, usuń całą bazę danych i utwórz nową.
źródło
Może to być przydatne dla kogoś, kto trafił tutaj z wyszukiwania. Upewnij się, że próbujesz upuścić tabelę, a nie widok .
SET foreign_key_checks = 0
polega na wyłączeniu sprawdzania klucza obcego, a następnieSET foreign_key_checks = 1
ponownym włączeniu sprawdzania klucza obcego. Gdy testy są wyłączone, tabele można porzucić, a następnie testy są ponownie włączane, aby zachować integralność struktury tabeli.źródło
Jeśli używasz phpmyadmin, ta funkcja już istnieje.
źródło
Możesz wykonać następujące kroki, pomogło mi upuścić tabelę z ograniczeniem, rozwiązanie już wyjaśnione w powyższym komentarzu, właśnie dodałem zrzut ekranu -
źródło
Drop bazy danych istnieje we wszystkich wersjach MySQL. Ale jeśli chcesz zachować strukturę tabeli, oto pomysł
mysqldump --no-data --add-drop-database --add-drop-table -h NAZWA HOSTA -u NAZWA UŻYTKOWNIKA -p> dump.sql
To jest program, a nie polecenie mysql
Następnie zaloguj się do mysql i
source dump.sql;
źródło
Proste rozwiązanie pozwalające zrzucić cały stół na raz z terminala.
Wymagało to kilku kroków w Twojej powłoce mysql (choć nie było to rozwiązanie jednoetapowe), zadziałało i uratowało mi dzień.
Pracował dla wersji serwera: 5.6.38 MySQL Community Server (GPL)
Kroki, które wykonałem:
Powłoka MySQL
źródło