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 sont à l'aide du moteur?

331
demandé sur djf 2008-10-17 23:28:38

11 réponses

SHOW TABLE STATUS WHERE Name = 'xxx'

cela vous donnera (entre autres choses) une colonne Engine , qui est ce que vous voulez.

426
répondu Greg 2008-10-17 19:30:09

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

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

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

211
répondu Jocker 2016-07-28 08:07:49
SHOW CREATE TABLE <tablename>;

moins parlable mais plus lisible que SHOW TABLE STATUS .

48
répondu Javier 2017-03-12 13:08:52

ou juste

show table status;

juste que cela va énumérer toutes les tables sur votre base de données.

38
répondu MArk Guadalupe 2009-08-19 04:29:20

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

12
répondu Evan Donovan 2011-08-12 16:31:17
SHOW CREATE TABLE <tablename>\G

le formatera beaucoup mieux par rapport à la sortie de

SHOW CREATE TABLE <tablename>;

l'astuce \G est également utile pour se souvenir de nombreuses autres requêtes/commandes.

9
répondu Nicholas 2013-01-13 18:18:32
mysqlshow -i <database_name>

affichera les informations pour tous les tableaux d'une base de données spécifique.

mysqlshow -i <database_name> <table_name> 

le fera uniquement pour un tableau spécifique.

4
répondu magic 2015-07-13 13:44:33

si vous utilisez L'établi MySQL, vous pouvez cliquer avec le bouton droit de la souris sur la table et sélectionner 'alter table'.

dans cette fenêtre, vous pouvez voir votre moteur de table et aussi le changer.

3
répondu T30 2015-09-24 07:58:55

si vous êtes un utilisateur de linux:

pour afficher les moteurs pour toutes les tables pour 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.

ouvrira toutes les informations pour toutes les tables dans less , appuyez sur -S pour couper les 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
répondu sjas 2015-07-13 13:52:16

allez à la base de données information_schema vous y trouverez la table 'tables' puis sélectionnez-la;

Mysql>utiliser information_schema; Mysql> select table_name,le moteur de tables;

0
répondu harsha vardhan 2013-08-01 08:28:44

encore une autre façon, peut-être la plus courte pour obtenir le statut d'un seul ou ensemble apparié de tables:

SHOW TABLE STATUS LIKE 'table';

vous pouvez alors utiliser comme opérateurs par exemple:

SHOW TABLE STATUS LIKE 'field_data_%';
0
répondu David Thomas 2015-01-04 07:12:46