web-dev-qa-db-fra.com

Comment savoir si une table mysql utilise myISAM ou InnoDB Engine?

Dans MySQL, il n'y a aucun moyen de spécifier un moteur de stockage pour une certaine base de données, uniquement pour les tables individuelles. Cependant, vous pouvez spécifier un moteur de stockage à utiliser pendant une session avec:

SET storage_engine=InnoDB;

Vous n'avez donc pas à le spécifier pour chaque table.

Comment puis-je confirmer, si en effet toutes les tables utilisent InnoDB?

78
kamal

Si vous utilisez SHOW CREATE TABLE, vous devez analyser le moteur hors de la requête.

La sélection dans la base de données INFORMATION_SCHEMA est une mauvaise pratique, car les développeurs se réservent le droit de modifier son schéma à tout moment (bien que cela soit peu probable).

La requête correcte à utiliser est SHOW TABLE STATUS - vous pouvez obtenir des informations sur toutes les tables d'une base de données:

SHOW TABLE STATUS FROM `database`;

Ou pour une table spécifique:

SHOW TABLE STATUS FROM `database` LIKE 'tablename';

L'une des colonnes que vous récupérerez est Engine.

121
TehShrike
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'
15
The Scrum Meister

show create table <table> devrait faire l'affaire.

3
Matt Caldwell