Commande MySQL interrogeant toute la base de données MyISAM

13

J'apprécierais que quelqu'un puisse m'aider sur la commande appropriée dans MySQL pour interroger toutes les bases de données pour avoir le moteur "MyISAM". J'ai besoin de convertir toutes les bases de données et les tables de MyISAM en InnoDB.

James Wise
la source

Réponses:

25

Ci-dessous est la requête pour trouver toutes les tables qui ont le MyISAMmoteur

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

Ci-dessus, Query listera toutes les tables ayant MyISAMEngine.

Pour savoir comment convertir vos tables MyISAM existantes en InnoDB, voici la requête qui renverra des instructions ALTER pour convertir les MyISAMtables existantes 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');

Vous pouvez exécuter ces instructions pour convertir des moteurs.

Abdul Manaf
la source
Merci @AbdulManaf. Je ne m'attendais pas à ce que la première commande prenne du temps sur le serveur.
James Wise
Oui, cela ne devrait pas prendre de temps.
Abdul Manaf
Comment interroger pour trouver toutes les tables des bases de données qui ne sont pas InnoDB?
James Wise