Perintah MySQL yang menanyakan semua basis data MyISAM

13

Saya akan sangat menghargai jika ada yang bisa membantu saya tentang apa perintah yang tepat di MySQL untuk meminta semua database untuk memiliki mesin "MyISAM". Saya perlu mengubah semua DB & tabel dari MyISAM ke InnoDB.

James Wise
sumber

Jawaban:

25

Di bawah ini adalah Permintaan untuk menemukan semua tabel yang memiliki MyISAMMesin

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');

Above Query akan mencantumkan semua tabel yang memiliki MyISAMEngine.

Untuk cara mengonversi tabel MyISAM yang ada ke InnoDB Di bawah ini adalah Kueri yang akan Mengembalikan Pernyataan ALTER untuk mengonversi MyISAMTabel yang ada 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');

Anda dapat menjalankan pernyataan ini untuk mengonversi mesin.

Abdul Manaf
sumber
Terima kasih @AbdulManaf. Saya tidak berharap perintah pertama akan memakan waktu di server.
James Wise
Ya, seharusnya tidak butuh waktu.
Abdul Manaf
Bagaimana cara kueri untuk menemukan semua tabel dalam database yang bukan InnoDB?
James Wise