MySQL命令查询所有MyISAM数据库


13

如果有人可以帮助我查询MySQL中具有“ MyISAM”引擎的所有数据库的正确命令,我将不胜感激。我需要将所有数据库和表从MyISAM转换为InnoDB。

Answers:


25

下面是查询以查找具有MyISAM引擎的所有表

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

查询上方将列出所有具有MyISAM引擎的表。

有关如何将现有MyISAM表转换为InnoDB 的查询,将返回ALTER语句以将现有转换为InnoDB MyISAMInnoDB

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

您可以执行这些语句来转换引擎。


谢谢@AbdulManaf。我没想到第一个命令会在服务器上花费时间。
James Wise 2013年

是的,不应该花时间。
Abdul Manaf 2013年

如何查询以查找非InnoDB数据库中的所有表?
詹姆斯·怀斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.