Команда 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?
Джеймс Уайз
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.