Wie würde ich alle Tabellen in MySQL mit einer bestimmten Engine anzeigen, z. B. InnoDB, MyISAM, FEDERATED?
Wie würde ich alle Tabellen in MySQL mit einer bestimmten Engine anzeigen, z. B. InnoDB, MyISAM, FEDERATED?
Antworten:
Verwenden Sie INFORMATION_SCHEMA.TABLES
Tabelle:
SELECT table_name FROM INFORMATION_SCHEMA.TABLES
WHERE engine = 'InnoDB'
Wenn Sie die Ergebnisse aus einer einzigen Datenbank erhalten möchten
SELECT TABLE_NAME FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname' AND engine = 'InnoDB';
Andere Beispiele hier.
Alle Tabellen nach Engine (außer Systemtabellen):
SELECT TABLE_SCHEMA as DbName ,TABLE_NAME as TableName ,ENGINE as Engine
FROM information_schema.TABLES
WHERE ENGINE = 'MyISAM' -- or InnoDB or whatever
AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema');
Alle Tabellen außer Engine (außer Systemtabellen):
SELECT TABLE_SCHEMA as DbName ,TABLE_NAME as TableName ,ENGINE as Engine
FROM information_schema.TABLES
WHERE ENGINE != 'MyISAM' -- or InnoDB or whatever
AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema');
Wenn einige Probleme haben und sehen möchten, in welcher Datenbank sich Tabellen mit einer bestimmten Engine befinden
SELECT
(SELECT group_concat(TABLE_NAME)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database1'
AND engine = 'MyIsam'
) as database1,
(SELECT group_concat(TABLE_NAME)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database2'
AND engine = 'MyIsam'
) as database2,
(SELECT group_concat(TABLE_NAME)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database3'
AND engine = 'MyIsam'
) as database3;
Grüße.