我怎么知道mysql表是使用myISAM还是InnoDB引擎?

kam*_*mal 81 mysql myisam innodb storage-engines

在MySQL中,无法为特定数据库指定存储引擎,仅针对单个表.但是,您可以指定在一个会话期间使用的存储引擎:

SET storage_engine=InnoDB;
Run Code Online (Sandbox Code Playgroud)

因此,您不必为每个表指定它.

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

Teh*_*ike 124

如果使用SHOW CREATE TABLE,则必须从查询中解析引擎.

从INFORMATION_SCHEMA数据库中选择是不好的做法,因为开发者保留随时更改其模式的权利(尽管不太可能).

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

SHOW TABLE STATUS FROM `database`;
Run Code Online (Sandbox Code Playgroud)

或者对于特定的表格:

SHOW TABLE STATUS FROM `database` LIKE 'tablename';
Run Code Online (Sandbox Code Playgroud)

您将获得的其中一个栏目是Engine.


The*_*ter 15

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'
Run Code Online (Sandbox Code Playgroud)


Mat*_*ell 5

show create table <table>应该可以解决问题。