Команда 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');

Выше Query перечислит все таблицы, имеющие 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?
Джеймс Уайз