在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