web-dev-qa-db-fra.com

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 .__ (en particulier myisam et innodb). Comment savoir quelles tables utilisent Avec quel moteur?

345
oneself

SHOW TABLE STATUS WHERE Name = 'xxx'

Cela vous donnera (entre autres choses) une colonne Engine, qui correspond à vos souhaits.

445
Greg

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

Remplacez dbname par le nom de votre base de données.

216
Jocker
SHOW CREATE TABLE <tablename>;

Moins analysable mais plus lisible que SHOW TABLE STATUS.

47
Javier

ou juste 

show table status; 

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

38
MArk Guadalupe

Un peu d'un tweak à la réponse de Jocker (je posterais comme 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.

13
Evan Donovan
SHOW CREATE TABLE <tablename>\G

formatera beaucoup mieux par rapport à la sortie de

SHOW CREATE TABLE <tablename>;

L'astuce \G est également utile à retenir pour de nombreuses autres requêtes/commandes.

9
Nicholas
mysqlshow -i <database_name>

affichera les informations pour toutes les tables d'une base de données spécifique.

mysqlshow -i <database_name> <table_name> 

le fera juste pour une table spécifique.

7
magic

Si vous utilisez MySQL Workbench, vous pouvez cliquer avec le bouton droit de la souris sur la table et sélectionner "modifier la table".

Dans cette fenêtre, vous pouvez voir votre moteur de table et également le modifier.

3
T30

Si vous êtes un utilisateur linux:

Pour afficher les moteurs de toutes les tables de toutes les bases de données sur un serveur mysql, sans tables information_schema, mysql, performance_schema:

less < <({ for i in $(mysql -e "show databases;" | cat | grep -v -e Database-e information_schema -e mysql -e performance_schema); do echo "--------------------$i--------------------";  mysql -e "use $i; show table status;"; done } | column -t)

Vous pourriez aimer cela, si vous êtes sur Linux, au moins.

Va ouvrir toutes les informations pour toutes les tables dans less, appuyez sur -S pour couper des lignes trop longues.

Exemple de sortie: 

--------------------information_schema--------------------
Name                                                        Engine              Version  Row_format  Rows   Avg_row_length  Data_length  Max_data_length     Index_length  Data_free  Auto_increment  Create_time  Update_time  Check_time  C
CHARACTER_SETS                                              MEMORY              10       Fixed       NULL   384             0            16434816            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLLATIONS                                                  MEMORY              10       Fixed       NULL   231             0            16704765            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLLATION_CHARACTER_SET_APPLICABILITY                       MEMORY              10       Fixed       NULL   195             0            16357770            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLUMNS                                                     MyISAM              10       Dynamic     NULL   0               0            281474976710655     1024          0          NULL            2015-07-13   15:48:45     2015-07-13  1
COLUMN_PRIVILEGES                                           MEMORY              10       Fixed       NULL   2565            0            16757145            0             0          NULL            2015-07-13   15:48:45     NULL        N
ENGINES                                                     MEMORY              10       Fixed       NULL   490             0            16574250            0             0          NULL            2015-07-13   15:48:45     NULL        N
EVENTS                                                      MyISAM              10       Dynamic     NULL   0               0            281474976710655     1024          0          NULL            2015-07-13   15:48:45     2015-07-13  1
FILES                                                       MEMORY              10       Fixed       NULL   2677            0            16758020            0             0          NULL            2015-07-13   15:48:45     NULL        N
GLOBAL_STATUS                                               MEMORY              10       Fixed       NULL   3268            0            16755036            0             0          NULL            2015-07-13   15:48:45     NULL        N
GLOBAL_VARIABLES                                            MEMORY              10       Fixed       NULL   3268            0            16755036            0             0          NULL            2015-07-13   15:48:45     NULL        N
KEY_COLUMN_USAGE                                            MEMORY              10       Fixed       NULL   4637            0            16762755            0 

.
.
.
2
sjas

affiche le statut de la table depuis nom_base_de_données;

Il listera toutes les tables de la base de données mentionnée.
Exemple de résultat

 sample output of mysql db

affiche le statut de la table où nom = nom_table_de_votre_désir

Il montrera le moteur de stockage utilisé par la table mentionnée.

0
zahid

Encore une autre manière, peut-être la plus courte pour obtenir le statut d’un ensemble de tables unique ou compatible:

SHOW TABLE STATUS LIKE 'table';

Vous pouvez ensuite utiliser les opérateurs LIKE par exemple:

SHOW TABLE STATUS LIKE 'field_data_%';
0
David Thomas

allez dans la base de données information_schema où vous trouverez la table 'tables' puis sélectionnez-la;

Mysql> use information_schema; Mysql> select nom_table, moteur dans les tables;

0
harsha vardhan

Si vous êtes unGUIet que vous voulez juste le trouver dans PhpMyAdmin , choisissez le tableau de votre choix et allez dans l'onglet Operations >> Table options >> Storage Engine. même changer à partir de là en utilisant la liste des options déroulantes.

PS: Ce guide est basé sur la version 4.8 de PhpMyAdmin. Impossible de garantir le même chemin pour les versions très anciennes.

0
mytuny