2008-10-17 22 views

Répondre

398

SHOW TABLE STATUS WHERE Name = 'xxx'

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

+2

Si ma table est endommagé, il est montre simplement moteur = NULL et a un « commentaire » me dit de réparer la table. Cependant, avant que je sache comment réparer la table, je devine que j'ai besoin de connaître le moteur (je ne suis pas allé aussi loin pour être honnête.) Par conséquent, le commentaire de @ Jocker ci-dessous m'a été beaucoup plus utile. – harperville

+0

@Greg, Devrions-nous utiliser ceci ou la solution de Jocker? – Pacerier

+0

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

48
SHOW CREATE TABLE <tablename>; 

Moins analysable mais plus lisible que SHOW TABLE STATUS.

35

ou tout simplement

show table status;

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

+0

Pour une raison quelconque renvoie 0 lignes dans mon cas ... –

+0

@NikolaiSamteladze, Avez-vous des tables dans la base de données sélectionnée? – Pacerier

195

Pour afficher une liste de toutes les tables dans 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 la base de données.

+2

C'est génial car il filtre tout sauf le nom de table et le moteur. – Tone

+0

Pour obtenir moteur de table spécifique, vous pouvez utiliser: 'SELECT MOTEUR DE INFORMATION_SCHEMA.TABLES OÙ TABLE_SCHEMA = '' ET TABLE_NAME = ''' – userlond

12

Bit d'un coup sec à la réponse de Jocker (je poster un commentaire, mais je n'ai pas assez de karma encore):

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

Cela exclut des vues MySQL dans la liste, qui n'ont pas un moteur.

9
SHOW CREATE TABLE <tablename>\G 

formate beaucoup plus agréable par rapport à la sortie de

SHOW CREATE TABLE <tablename>; 

L'astuce \G est également utile de se rappeler pour beaucoup d'autres requêtes/commandes.

+0

\ G hack est uniquement sous cli mysql – gaRex

0

allez à la base de données information_schema là vous trouverez le tableau 'tables' puis sélectionnez-le;

Mysql> utiliser information_schema; Mysql> sélectionnez nom_table, moteur à partir des tables;

4
mysqlshow -i <database_name> 

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

mysqlshow -i <database_name> <table_name> 

le fera uniquement pour une table spécifique.

+1

Cela ne répond pas à la question car il affiche les moteurs pour toutes les tables. L'initiateur de la question cherchait des informations sur un tableau spécifique. – Tass

0

Encore une autre façon, peut-être le plus court pour obtenir le statut d'un ensemble simple ou assorti de tables:

SHOW TABLE STATUS LIKE 'table'; 

Vous pouvez ensuite utiliser comme des opérateurs, par exemple:

SHOW TABLE STATUS LIKE 'field_data_%'; 
2

Si vous êtes utilisateur linux:

Pour afficher les moteurs de 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 ceci, si vous êtes sur Linux, au moins.

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

sortie Exemple:

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

. 
. 
. 
3

Si vous utilisez MySQL Workbench, vous pouvez cliquer droit sur la table et sélectionnez 'alter table'.

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