Comment puis-je vérifier le type de moteur MySQL pour une table spécifique?
11 réponses
SHOW TABLE STATUS WHERE Name = 'xxx'
cela vous donnera (entre autres choses) une colonne Engine
, qui est ce que vous voulez.
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.
SHOW CREATE TABLE <tablename>;
moins parlable mais plus lisible que SHOW TABLE STATUS
.
ou juste
show table status;
juste que cela va énumérer toutes les tables sur votre base de données.
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.
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.
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.
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.
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
.
.
.
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;
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_%';