it-swarm.com.de

Woher weiß ich, ob eine MySQL-Tabelle MyISAM oder InnoDB Engine verwendet?

In MySQL gibt es keine Möglichkeit, eine Speicher-Engine für eine bestimmte Datenbank anzugeben, nur für einzelne Tabellen. Sie können jedoch eine Speicher-Engine angeben, die während einer Sitzung verwendet werden soll mit:

SET storage_engine=InnoDB;

Sie müssen es also nicht für jede Tabelle angeben.

Wie bestätige ich, ob tatsächlich alle Tabellen InnoDB verwenden?

78
kamal

Wenn Sie SHOW CREATE TABLE verwenden, müssen Sie die Engine aus der Abfrage auslesen.

Das Auswählen aus der INFORMATION_SCHEMA-Datenbank ist eine schlechte Praxis, da sich die Entwickler das Recht vorbehalten, das Schema jederzeit zu ändern (obwohl dies unwahrscheinlich ist).

Die richtige Abfrage lautet SHOW TABLE STATUS - Sie können Informationen zu allen Tabellen in einer Datenbank abrufen:

SHOW TABLE STATUS FROM `database`;

Oder für eine bestimmte Tabelle:

SHOW TABLE STATUS FROM `database` LIKE 'tablename';

Eine der Spalten, die Sie zurückerhalten, ist Engine.

121
TehShrike
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'
15

show create table <table> sollte den Trick machen.

3
Matt Caldwell