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.