我怎么知道一个MySQL表是使用myISAM还是InnoDB引擎?

在MySQL中,没有办法为特定的数据库指定存储引擎,只能为单个表指定。 但是,您可以指定要在一个会话期间使用的存储引擎:

SET storage_engine=InnoDB; 

所以你不必为每个表格指定它。

我如何确认,如果确实所有的表都使用InnoDB?

如果使用SHOW CREATE TABLE,则必须从查询中parsing引擎。

从INFORMATION_SCHEMA数据库中进行select是不好的做法,因为开发者有权随时更改模式(尽pipe这是不太可能的)。

要使用正确的查询是SHOW TABLE STATUS – 您可以获取有关数据库中所有表的信息:

 SHOW TABLE STATUS FROM `database`; 

或者对于特定的表格:

 SHOW TABLE STATUS FROM `database` LIKE 'tablename'; 

你会找回来的一个列是引擎。

 SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB' 

show create table <table>应该做的伎俩。