我的MySQL数据库包含几个使用不同存储引擎的表 (特别是myisam和innodb)。我怎么知道是哪几张桌子呢 使用哪个引擎?


当前回答

如果你是一个GUI的家伙,只是想在PhpMyAdmin中找到它,然后选择你选择的表,并在操作选项卡>>表选项>>存储引擎。 您甚至可以从那里使用下拉选项列表更改它。

PS:本指南基于PhpMyAdmin的4.8版本。不能保证非常旧的版本有相同的路径。

其他回答

mysqlshow -i <database_name>

将显示特定数据库的所有表的信息。

mysqlshow -i <database_name> <table_name> 

只对一个特定的表这样做。

要显示数据库中所有表及其引擎的列表,使用下面的SQL查询:

SELECT TABLE_NAME,
       ENGINE
FROM   information_schema.TABLES
WHERE  TABLE_SCHEMA = 'dbname';

将dbname替换为数据库名称。

对Jocker的回复做了一点调整(我想作为评论发布,但我还没有足够的因果报应):

SELECT TABLE_NAME, ENGINE
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;

这将MySQL视图从列表中排除,因为它没有引擎。

SHOW CREATE TABLE <tablename>\G

它的格式会比输出更好吗

SHOW CREATE TABLE <tablename>;

\G技巧对于许多其他查询/命令也很有用。

SHOW TABLE STATUS WHERE Name = 'xxx'

这将为您提供一个Engine列(以及其他内容),这就是您想要的。