Jak sprawdzić wszystkie tabele w bazie danych za jednym razem?
Zamiast wpisywać zapytanie check table ''tablename'';
dla wszystkich tabel jeden po drugim.
Czy jest jakieś proste polecenie check all
lub coś takiego?
z linii poleceń możesz użyć:
mysqlcheck -A --auto-repair
Polecenie jest takie:
mysqlcheck -u root -p --auto-repair --check --all-databases
Na żądanie musisz podać hasło,
lub możesz uruchomić ten, ale nie jest to zalecane, ponieważ hasło jest zapisane zwykłym tekstem:
mysqlcheck -u root --password=THEPASSWORD --auto-repair --check --all-databases
Użyj następującego zapytania, aby wydrukować
REPAIR
instrukcje SQL dla wszystkich tabel w bazie danych:Następnie skopiuj wszystkie zapytania i wykonaj je na
mydatabase
.Uwaga: zastąp
mydatabase
żądaną nazwą bazy danychźródło
Nie musisz wpisywać hasła, po prostu użyj jednego z następujących poleceń (oczywiste):
źródło
Następujące polecenie działało dla mnie przy użyciu wiersza polecenia (jako administrator) w systemie Windows:
Uruchom mysqlcheck z użytkownikiem root, zapytaj o hasło, sprawdź wszystkie bazy danych i automatycznie napraw wszystkie uszkodzone tabele.
źródło
Nie ma domyślnego polecenia, które mogłoby to zrobić, ale możesz utworzyć procedurę wykonującą to zadanie. Będzie przechodzić przez wiersze
information_schema
i wywoływaćREPAIR TABLE 'tablename';
każdy wiersz.CHECK TABLE
nie jest jeszcze obsługiwany dla przygotowanych wyciągów. Oto przykład (zamień MYDATABASE na nazwę swojej bazy danych):źródło
Podoba mi się to dla prostego sprawdzenia z powłoki:
źródło
mysql -ss
do pominięcia nazw kolumn w wynikach - pozwoliłoby to usunąćNR != 1
z twojego koduw przypadku hostów plesk jedno z nich powinno wystarczyć: (oba robią to samo)
źródło
Możesz potrzebować nazwy użytkownika i hasła:
Zostaniesz poproszony o podanie hasła.
Jeśli chcesz umieścić w cronie, ALE twoje hasło będzie widoczne w postaci zwykłego tekstu!
źródło
Jeśli uszkodzone tabele pozostaną po
próbować
źródło