【发布时间】:2011-05-29 18:23:27
【问题描述】:
在 MySQL 中,没有办法为某个数据库指定存储引擎,只能为单个表指定存储引擎。但是,您可以指定在一个会话期间使用的存储引擎:
SET storage_engine=InnoDB;
因此您不必为每个表指定它。
如果确实所有表都在使用 InnoDB,我该如何确认?
【问题讨论】:
标签: mysql innodb myisam storage-engines
在 MySQL 中,没有办法为某个数据库指定存储引擎,只能为单个表指定存储引擎。但是,您可以指定在一个会话期间使用的存储引擎:
SET storage_engine=InnoDB;
因此您不必为每个表指定它。
如果确实所有表都在使用 InnoDB,我该如何确认?
【问题讨论】:
标签: mysql innodb myisam storage-engines
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'
【讨论】:
show create table <table> 应该可以解决问题。
【讨论】:
如果使用 SHOW CREATE TABLE,则必须将引擎解析出查询。
从 INFORMATION_SCHEMA 数据库中选择是不好的做法,因为开发人员保留随时更改其架构的权利(尽管不太可能)。
要使用的正确查询是 SHOW TABLE STATUS - 您可以获得有关数据库中所有表的信息:
SHOW TABLE STATUS FROM `database`;
或者对于特定的表:
SHOW TABLE STATUS FROM `database` LIKE 'tablename';
您将获得的其中一列是引擎。
【讨论】: