Comment connaître le moteur de stockage utilisé d'une base de données?


12

Auparavant, sur chaque base de données créée, j'utilise:

mysql -u root -p
CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON dbname.* TO 'dbuser'@'localhost';

puis utiliser la base de données sans penser à MyISAM ou InnoDB

Comment connaître le moteur de stockage utilisé d'une base de données?

Réponses:


13

Vous pouvez vérifier par table comme ceci:

USE <database>;
SHOW TABLE STATUS\G

vous obtiendrez une sortie dans ce sens:

root@localhost/database> show table status\G
*************************** 1. row ***************************
           Name: tablename
         Engine: MyISAM
        Version: 10
     Row_format: Fixed
           Rows: 101
 Avg_row_length: 70
    Data_length: 7070
Max_data_length: 19703248369745919
   Index_length: 2048
      Data_free: 0
 Auto_increment: 1004
    Create_time: 2009-12-07 20:15:53
    Update_time: 2010-11-10 21:55:01
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 

de quelque manière que ce soit que vous savez faire toutes les tables dans une base de données (en plus d'écrire un script SHOW TABLEpour chaque table de la base de données)?
voretaq7

2
@ voretaq7 "SHOW TABLE STATUS" vous montre toutes les tables par défaut.
Coops

cool - je suis un mec postgres donc tout ce truc MySQL et plusieurs moteurs de stockage est étrange pour moi :-)
voretaq7

5

Utilisez la commande «show engine» pour afficher le moteur par défaut actif

Ajoutez default-storage-engine = InnoDB dans la section [mysqld] du fichier my.cnf pour que le moteur par défaut soit actif.

Utilisez la commande «show create table nom_table» pour afficher le moteur par défaut dans le tableau.


SHOW ENGINEme donne l'ERREUR 1064 (42000).
mstrap

1
show engines;
w00t

4

Cette requête répertorie toutes les tables InnoDB et leurs bases de données dans MySQL:

SELECT table_name, table_schema 
FROM information_schema.tables 
WHERE engine = 'InnoDB';

Vous pouvez également répertorier toutes les tables et leurs moteurs de stockage:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

J'ai essayé la deuxième requête - j'obtiens l'erreur: ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (sur MySQL 5.6.37)
nnyby

1

Pour obtenir le nom du moteur pour une table spécifique

use <database_name>
show table status like '<table_name>';

Pour changer de moteur

alter table <table_name> engine <engine_name>;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.