486 votes

Comment puis-je vérifier le type de moteur MySQL pour une table spécifique ?

Ma base de données MySQL contient plusieurs tables utilisant différents moteurs de stockage (notamment myisam et innodb). Comment puis-je savoir quelles tables utilisent utilisent quel moteur ?

619voto

Greg Points 132247

SHOW TABLE STATUS WHERE Name = 'xxx'

Cela vous donnera (entre autres choses) un Engine ce qui est ce que vous voulez.

0 votes

@Greg, Devrions-nous utiliser cette solution ou celle de Jocker ?

0 votes

@Pacerier - Les deux fonctionnent bien. La différence est que cette solution donne l'information pour une table, alors que la solution de Jocker montre le type de moteur pour toutes les tables d'une base de données (tout en étant un peu plus lisible aussi).

0 votes

Greg, pourquoi les informations sur le moteur ne s'affichent-elles pas quand on le fait ? show full columns from t1 ?

301voto

Jocker Points 931

Pour afficher une liste de toutes les tables d'une base de données et de leurs moteurs, utilisez cette requête SQL :

SELECT TABLE_NAME,
       ENGINE
FROM   information_schema.TABLES
WHERE  TABLE_SCHEMA = 'dbname';

Remplacer dbname avec le nom de votre base de données.

5 votes

C'est génial parce que ça filtre tout sauf le nom de la table et le moteur.

2 votes

Pour obtenir le moteur d'une table spécifique, vous pouvez utiliser : SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'

1 votes

Cela me donne un ensemble vide sur MySQL 5.6.37.

59voto

Javier Points 33134
SHOW CREATE TABLE <tablename>;

Moins facile à analyser mais plus lisible que SHOW TABLE STATUS .

55voto

Ou simplement

show table status;

juste que cela va lister toutes les tables de votre base de données.

21voto

Evan Donovan Points 326

Une petite modification de la réponse de Jocker (je la posterais bien en tant que commentaire, mais je n'ai pas encore assez de karma) :

SELECT TABLE_NAME, ENGINE
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;

Cela exclut les vues MySQL de la liste, qui n'ont pas de moteur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X