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.

James Wise
źródło

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.

Abdul Manaf
źródło
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