Comando MySQL que consulta toda la base de datos MyISAM

13

Le agradecería si alguien pudiera ayudarme a saber cuál es el comando adecuado en MySQL para consultar todas las bases de datos para tener el motor "MyISAM". Necesito convertir todos los DB y tablas de MyISAM a InnoDB.

James Wise
fuente

Respuestas:

25

A continuación se muestra la consulta para encontrar todas las tablas que tienen 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');

La consulta anterior enumerará todas las tablas que tienen MyISAMEngine.

Para saber cómo convertir sus tablas MyISAM existentes a InnoDB, a continuación se encuentra la consulta que devolverá las declaraciones ALTER para convertir las MyISAMtablas existentes 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');

Puede ejecutar estas declaraciones para convertir motores.

Abdul Manaf
fuente
Gracias @AbdulManaf. No esperaba que el primer comando tomara tiempo en el servidor.
James Wise
Sí, no debería llevar tiempo.
Abdul Manaf
¿Cómo consultar para encontrar todas las tablas en bases de datos que no son InnoDB?
James Wise