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.