Comando MySQL consultando todos os bancos de dados MyISAM

13

Eu apreciaria se alguém pudesse me ajudar sobre qual é o comando apropriado no MySQL para consultar todos os bancos de dados por terem o mecanismo "MyISAM". Preciso converter todos os bancos de dados e tabelas do MyISAM para o InnoDB.

James Wise
fonte

Respostas:

25

Abaixo está a consulta para encontrar todas as tabelas que possuem MyISAMmecanismo

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');

A Consulta acima listará todas as tabelas com o MyISAMMecanismo.

Para saber como converter suas tabelas MyISAM existentes para o InnoDB Abaixo está a consulta que retornará as instruções ALTER para as quais as MyISAMtabelas existentes serão convertidas 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');

Você pode executar essas instruções para converter mecanismos.

Abdul Manaf
fonte
Obrigado @AbdulManaf. Não esperava que o primeiro comando levasse tempo no servidor.
James Sábio
Sim, não deve levar tempo.
Abdul Manaf
Como consultar para encontrar todas as tabelas em bancos de dados que não são o InnoDB?
James Wise