Lệnh MySQL truy vấn tất cả cơ sở dữ liệu MyISAM


13

Tôi sẽ đánh giá cao nếu có ai có thể giúp tôi về lệnh nào phù hợp trong MySQL để truy vấn tất cả cơ sở dữ liệu để có công cụ "MyISAM". Tôi cần chuyển đổi tất cả các bảng DB & từ MyISAM sang InnoDB.

Câu trả lời:


25

Dưới đây là Truy vấn để tìm tất cả các bảng có MyISAMEngine

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

Trên truy vấn sẽ liệt kê tất cả các bảng có MyISAMEngine.

Để biết cách chuyển đổi các bảng MyISAM hiện tại của bạn sang InnoDB Dưới đây là Truy vấn sẽ trả về Báo cáo ALTER để chuyển đổi các MyISAMBảng hiện có sang 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');

Bạn có thể thực hiện các câu lệnh này để chuyển đổi động cơ.


Cảm ơn @AbdulManaf. Tôi không mong đợi lệnh đầu tiên sẽ mất thời gian trên máy chủ.
James Wise

Có, nó không nên mất thời gian.
Abdul Manaf

Làm cách nào để truy vấn để tìm tất cả các bảng trong cơ sở dữ liệu không phải là InnoDB?
James Wise
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.