Jak usunąć wszystkie tabele z bazy danych MySQL bez upuszczania bazy danych?
12
Muszę upuścić wszystkie tabele w bazie danych, nie znając wcześniej ich nazw. Typową procedurą jest upuszczenie, a następnie odtworzenie bazy danych, ale nie jest to opcja. Jak najlepiej to zrobić?
Nawiasem mówiąc, dlaczego piszesz „$” przed wartością IFS? Dlaczego to nie wygląda jak „IFS = '\ n”?
kolypto
@o_OTync Użycie $''powoduje, że bash interpretuje sekwencje odwrócone zamiast traktować je dosłownie. '\n'zawiera dokładnie \ n, dokładnie tak, co $IFSrozumiałoby podział na znaki \ in. $'\n'będzie zawierał znak nowej linii 0x0D. Zajrzyj tutaj, aby uzyskać więcej informacji: gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting .
Jeff Snider,
Myślę, że jest to prostsze niż użycie Information_SCHEMA.
Angel Chiang
0
Niedawno na blogu Xaprb pojawił się wpis, który ładnie to opisuje.
Obejmuje to, dlaczego używanie INFORMATION_SCHEMAnie zawsze jest dobrą rzeczą i odwołuje się do narzędzia od tych uroczych ludzi w Maatkit .
Niezwykle zły pomysł na jakąkolwiek nietrywialną konfigurację, ponieważ MySQL nie spodziewa się, że te pliki nagle znikną i może być w trakcie dowolnej liczby operacji, transakcji, replikacji, blokad ...
bot403
Czy w takim razie zastanowiłbyś się nad poprawieniem swojej odpowiedzi w celu uwzględnienia odpowiednich poleceń i procedury?
Odpowiedzi:
Istnieje prostszy bash one-liner za pomocą mysqldump (z Thingy Ma Jig Blog ).
Jeśli pojawia się ten błąd:
Spróbuj wykonać następujące czynności:
Teraz ignoruje ograniczenia.
źródło
Powinieneś użyć tabel Information_schema, aby pobrać metadane dotyczące bazy danych, a następnie upuścić wymienione tam tabele.
źródło
Możesz również wypróbować szybki skrypt powłoki:
Usuń
echo
po sprawdzeniu, że zrobi to, czego oczekujesz.źródło
$''
powoduje, że bash interpretuje sekwencje odwrócone zamiast traktować je dosłownie.'\n'
zawiera dokładnie \ n, dokładnie tak, co$IFS
rozumiałoby podział na znaki \ in.$'\n'
będzie zawierał znak nowej linii 0x0D. Zajrzyj tutaj, aby uzyskać więcej informacji: gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting .Niedawno na blogu Xaprb pojawił się wpis, który ładnie to opisuje.
Obejmuje to, dlaczego używanie
INFORMATION_SCHEMA
nie zawsze jest dobrą rzeczą i odwołuje się do narzędzia od tych uroczych ludzi w Maatkit .Spróbuj wykonać następujące czynności z
mk-find
:Jeśli jesteś zadowolony z wyników, to:
źródło
Jeśli masz dostęp do systemu plików, to po prostu
rm -rf databasename/*
:).Instrukcja Drop bazy danych robi to samo ... Fragment podręcznika MySQL:
Instrukcja DROP DATABASE usuwa z podanego katalogu bazy danych te pliki i katalogi, które sam MySQL może utworzyć podczas normalnej pracy:
źródło