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.

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.