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.

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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.