Czy istnieje dobry łatwy sposób na usunięcie wszystkich tabel z bazy danych MySQL, ignorując wszelkie ograniczenia dotyczące kluczy obcych, które mogą tam być?
mysql
foreign-keys
innodb
sql-drop
bcmcfc
źródło
źródło
Drop
z menu rozwijanego, możesz odznaczyćForeign key check
pole wyboru.Odpowiedzi:
Uważam, że wygenerowany zestaw instrukcji drop jest użyteczny i polecam następujące poprawki:
Uwaga 1: To nie wykonuje instrukcji DROP, po prostu daje ci ich listę.Będziesz musiał wyciąć i wkleić dane wyjściowe do silnika SQL, aby je wykonać.
Uwaga 2: Jeśli masz WIDOKI, będziesz musiał je poprawić
DROP TABLE `VIEW_NAME`
DROP VIEW `VIEW_NAME`
ręcznie instrukcję .Dlatego, aby instrukcje drop działały, jeśli potrzebujesz:
Spowoduje to wyłączenie sprawdzania integralności referencyjnej - więc po zakończeniu upuszczania, którego potrzebujesz, będziesz musiał zresetować sprawdzanie klucza za pomocą
Uwaga: aby łatwiej użyć wyjścia SELECT, może pomóc opcja mysql -B.
źródło
DROP DATABASE foo; CREATE DATABASE foo;
, że nie jestem taki sam, ale dla mnie zadziałał.Od http://www.devdaily.com/blog/post/mysql/drop-mysql-tables-in-any-order-foreign-keys :
(Zauważ, że to wyjaśnia, jak wyłączyć sprawdzanie klucza obcego, aby móc upuścić tabele w dowolnej kolejności. Nie odpowiada, jak automatycznie generować instrukcje drop-table dla wszystkich istniejących tabel i wykonywać je w jednym skrypcie. Odpowiedź Jeana robi.)
źródło
Oto zmodyfikowana procedura przechowywana SurlyDre, tak aby klucze obce były ignorowane:
źródło
_tableName
cytaty. W przeciwnym razie nie powiedzie się w przypadku niektórych tabel takich jakgroup
lub innych słów kluczowych.każde powyższe podejście obejmuje znacznie więcej pracy niż ta AFAICT ...
źródło
mysqldump
, abymysql
, bez przechodzenia przez pliku?mysqldump
wprowadziłemgrep
domysql
niego, działa. Jeszcze raz dziękuję za twoje rozwiązanie, jest dobre.Z tej odpowiedzi ,
wykonać:
Spowoduje to usunięcie tabel z aktualnie używanej bazy danych. Możesz ustawić bieżącą bazę danych za pomocą
use
.W przeciwnym razie zaakceptowana odpowiedź Diona jest prostsza, z tym wyjątkiem, że musisz ją wykonać dwa razy, po pierwsze, aby uzyskać zapytanie, a po drugie, aby wykonać zapytanie. Podałem kilka głupich tyknięć, aby uciec od znaków specjalnych w nazwach db i tabel.
źródło
Oto rozwiązanie oparte na kursorze. Trochę długa, ale działa jako pojedyncza partia SQL:
źródło
Możesz to zrobić:
Następnie uruchom wygenerowane zapytania. Porzucą każdą tabelę w bieżącej bazie danych.
Oto pomoc dotycząca
drop table
poleceń.źródło
||
jest ustawiony jako operator konkatenacji. Mówiąc dokładniej, zawiera tryb MySQL SQLPIPES_AS_CONCAT
. Odniesienie: dev.mysql.com/doc/refman/5.0/en/…concat
zamiast||
Wymyśliłem tę modyfikację w odpowiedzi Dion Truter, aby ułatwić wiele stolików:
Zwraca to całą rzecz w jednym polu, więc możesz skopiować raz i usunąć wszystkie tabele (użyj
Copy Field Content (unquoted)
w Workbench). Jeśli masz dużo stolików, możesz przekroczyć pewne limityGROUP_CONCAT()
. Jeśli tak, zwiększ maksymalną wartość zmiennej len (imax_allowed_packet
, jeśli to konieczne).źródło
Googling na ten temat zawsze prowadzi mnie do tego SO pytania, więc tutaj działa kod mysql, który usuwa OBA tabele i widoki:
źródło
Jeden linijka do usunięcia wszystkich tabel z danej bazy danych:
Uruchomienie tego spowoduje usunięcie wszystkich tabel z bazy danych DATABASE_NAME.
Zaletą tego jest to, że nazwa bazy danych jest zapisywana jednoznacznie tylko raz.
źródło
Oto zautomatyzowany sposób, aby to zrobić za pomocą skryptu bash:
źródło
Jeśli w systemie Linux (lub innym systemie obsługującym potokowanie, echo i grep) możesz to zrobić za pomocą jednej linii:
Wiem, że to stare pytanie, ale myślę, że ta metoda jest szybka i prosta.
źródło
W php jest to tak proste jak:
Pamiętaj tylko, aby zmienić YOURDB na nazwę bazy danych i oczywiście na użytkownika / hasło.
źródło
W powłoce Linux, takiej jak bash / zsh:
Spowoduje to wygenerowanie poleceń, a następnie natychmiast potokuje je do drugiej instancji klienta, która usunie tabele.
Sprytny kawałek jest oczywiście kopiowany z innych odpowiedzi tutaj - chciałem tylko kopiować i wklejać jedno-liniowy (ish), aby faktycznie wykonać zadanie, które chciał OP.
Pamiętaj oczywiście, że w tych komendach mysql będziesz musiał (dwukrotnie) podać swoje dane uwierzytelniające, chyba że masz bardzo niskie ustawienia bezpieczeństwa. (lub możesz użyć aliasu polecenia mysql, aby dołączyć swoje poświadczenia.)
źródło
Wystarczy umieścić tutaj użyteczny komentarz Jonathana Watta, aby usunąć wszystkie stoły
Pomaga mi i mam nadzieję, że może się przydać
źródło
Usuń wszystkie tabele z bazy danych za pomocą jednego wiersza z wiersza polecenia:
Gdzie [nazwa_użytkownika], [hasło], [nazwa_hosta] i [nazwa_bazy_danych] muszą zostać zastąpione rzeczywistymi danymi (użytkownik, hasło, nazwa hosta, nazwa bazy danych).
źródło
To dość stary post, ale moim zdaniem żadna z odpowiedzi tutaj nie odpowiada na pytanie, więc mam nadzieję, że mój post pomoże ludziom!
Znalazłem to rozwiązanie w innym pytaniu, które działa dla mnie naprawdę dobrze:
To faktycznie opróżni wszystkie tabele w bazie danych
DB_NAME
, a nie tylko wyświetliTRUNCATE
wiersz poleceń.Mam nadzieję że to pomoże!
źródło
Opierając się na odpowiedziach @Dion Truter i @Wade Williams, następujący skrypt powłoki usunie wszystkie tabele, po uprzednim pokazaniu, co ma zamiar uruchomić, i daje szansę przerwania za pomocą Ctrl-C.
źródło
To rozwiązanie opiera się na odpowiedzi @SkyLeach, ale obsługuje usuwanie tabel z kluczami obcymi.
źródło
źródło
Proste i jasne (może być).
To może nie być wymyślne rozwiązanie, ale zadziałało to 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
Korzystam z następujących na serwerze MSSQL:
Zamień YOUR_DATABASE na nazwę bazy danych lub usuń całą instrukcję IF (podoba mi się dodatkowe bezpieczeństwo).
źródło
Najlepsze rozwiązanieJak dotąd dla mnie
Wybierz Baza danych -> Kliknij prawym przyciskiem myszy -> Zadania -> Generuj skrypty - otworzy się kreator do generowania skryptów. Po wybraniu obiektów w zestawie opcji Skrypty kliknij przycisk Zaawansowane . W obszarze „Skrypt DROP i UTWÓRZ” wybierz Skrypt DROP .
Uruchom skrypt.
źródło