Команда MySQL запитує всю базу даних MyISAM


13

Буду вдячний, якщо хтось міг би допомогти мені про те, що є правильною командою в MySQL, щоб запитати всю базу даних щодо наявності двигуна "MyISAM". Мені потрібно конвертувати всі БД та таблиці з MyISAM в InnoDB.

Відповіді:


25

Нижче наведено Запит, щоб знайти всі таблиці, які містять MyISAMEngine

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');

Вище запиту буде перераховано всі таблиці, що мають MyISAMEngine.

Про те, як перетворити існуючі таблиці MyISAM в InnoDB Нижче наведено Запит, який поверне ALTER заяви для перетворення існуючих MyISAMтаблиць у 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');

Ви можете виконати ці заяви для перетворення двигунів.


Дякую @AbdulManaf. Я не очікував, що перша команда потребує часу на сервері.
Джеймс Мудрий

Так, це не повинно зайняти часу.
Абдул Манаф

Як зробити запит, щоб знайти всі таблиці в базах даних, які не є InnoDB?
Джеймс Мудрий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.