Komenda MySQL odpytuje całą bazę danych MyISAM


13

Byłbym wdzięczny, gdyby ktokolwiek mógł mi pomóc w wyborze właściwego polecenia w MySQL do zapytania całej bazy danych o silnik „MyISAM”. Muszę przekonwertować wszystkie DB i tabele z MyISAM do InnoDB.

Odpowiedzi:


25

Poniżej znajduje się zapytanie, aby znaleźć wszystkie tabele, które mają MyISAMsilnik

SELECT TABLE_SCHEMA as DbName ,TABLE_NAME as TableName ,ENGINE as Engine FROM information_schema.TABLES WHERE ENGINE='MyISAM' AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema');

Powyższe zapytanie wyświetli wszystkie tabele z MyISAMsilnikiem.

Aby dowiedzieć się, jak przekonwertować istniejące tabele MyISAM na InnoDB, poniżej znajduje się zapytanie, które zwróci instrukcje ALTER do konwersji istniejących MyISAMtabel InnoDB.

SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA,'`.`',TABLE_NAME, '` ENGINE = InnoDB;') FROM information_schema.TABLES WHERE ENGINE='MyISAM' AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema');

Możesz wykonać te instrukcje, aby przekonwertować silniki.


Dzięki @AbdulManaf. Nie spodziewałem się, że pierwsze polecenie zajmie trochę czasu na serwerze.
James Wise,

Tak, to nie powinno zająć czasu.
Abdul Manaf

Jak wykonać zapytanie, aby znaleźć wszystkie tabele w bazach danych, które nie są InnoDB?
James Wise
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.