Der MySQL-Befehl fragt alle MyISAM-Datenbanken ab

13

Ich würde mich freuen, wenn mir jemand helfen könnte, was der richtige Befehl in MySQL ist, um alle Datenbanken nach der "MyISAM" -Engine abzufragen. Ich muss alle DB & Tabellen von MyISAM nach InnoDB konvertieren.

James Wise
quelle

Antworten:

24

Unten finden Sie die Abfrage, um alle Tabellen mit MyISAMEngine zu finden

SELECT TABLE_SCHEMA as DbName ,TABLE_NAME as TableName ,ENGINE as Engine FROM information_schema.TABLES WHERE ENGINE='MyISAM' AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema');

Die obige Abfrage listet alle Tabellen mit MyISAMEngine auf.

Informationen zum Konvertieren Ihrer vorhandenen MyISAM-Tabellen in InnoDB Unten finden Sie die Abfrage, die ALTER-Anweisungen zurückgibt, in die vorhandene MyISAMTabellen konvertiert werden sollen InnoDB.

SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA,'`.`',TABLE_NAME, '` ENGINE = InnoDB;') FROM information_schema.TABLES WHERE ENGINE='MyISAM' AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema');

Sie können diese Anweisungen ausführen, um Engines zu konvertieren.

Abdul Manaf
quelle
Vielen Dank @AbdulManaf. Ich hatte nicht erwartet, dass der erste Befehl auf dem Server Zeit in Anspruch nehmen würde.
James Wise
Ja, es sollte keine Zeit dauern.
Abdul Manaf
Wie kann man abfragen, um alle Tabellen in Datenbanken zu finden, die nicht InnoDB sind?
James Wise