我怎么知道一个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>
应该做的伎俩。