在MySQL中,没有办法为特定数据库指定存储引擎,只能为单个表指定存储引擎。但是,您可以指定要在一个会话期间使用的存储引擎:如何知道mysql表是否使用myISAM或InnoDB引擎?
SET storage_engine=InnoDB;
因此,您不必为每个表指定它。
如何确认,如果确实所有表都使用InnoDB?
在MySQL中,没有办法为特定数据库指定存储引擎,只能为单个表指定存储引擎。但是,您可以指定要在一个会话期间使用的存储引擎:如何知道mysql表是否使用myISAM或InnoDB引擎?
SET storage_engine=InnoDB;
因此,您不必为每个表指定它。
如何确认,如果确实所有表都使用InnoDB?
如果使用SHOW CREATE TABLE,则必须将引擎解析出查询。
从INFORMATION_SCHEMA数据库中进行选择是不好的做法,因为开发人员随时保留更改模式的权利(尽管不太可能)。
正确的查询使用的是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'
只需要注意INFORMATION_SCHEMA中的数据被缓存,因此最好在声明前使用[FLUSH TABLES](http://dev.mysql.com/doc/refman/5.0/en/flush.html)你提供了 – 2010-12-23 04:15:28
@omg`ALTER TABLE SET ENIGINE =`不会清除/重置缓存? – 2010-12-23 04:36:21
show create table <table>
应该这样做。
可能重复[如何检查特定表的MySQL引擎类型?](http://stackoverflow.com/questions/213543/how-can-i-check-mysql-engine-type-for-a -specific-table) – 2015-03-12 04:38:42