我该如何确定MySQL数据库的类型:它是InnoDB还是MyISAM?

34
  • 如何确定 MySQL 数据库的类型:是 InnoDB 还是 MyISAM?
  • 如何将 MyISAM 转换为 InnoDB 或反之亦然?

你使用任何数据库管理系统吗?比如phpMyAdmin或SQLyog? - user254875486
不,我没有使用任何数据库管理系统。 - Rachel
我正在尝试修改表the_table的引擎为InnoDB,但似乎引擎没有改变,这是因为我没有权限还是其他原因? - Rachel
6个回答

46

要确定表所使用的存储引擎,可以使用show table status命令。结果中的Engine字段将显示表的数据库引擎。或者,您可以从information_schema.tables中选择engine字段:

select engine 
from   information_schema.tables 
where  table_schema = 'schema_name'
   and table_name = 'table_name' 

你可以使用alter table切换存储引擎:

alter table the_table engine = InnoDB;
当然,您可以指定任何可用的存储引擎。

1
我正在尝试修改表the_table的引擎为InnoDB,但似乎引擎没有改变,这是因为我没有权限还是其他原因? - Rachel
如果存储引擎不支持尝试的 ALTER TABLE 操作,则可能会出现警告。这些警告可以通过 SHOW WARNINGS 显示。 - David Tonhofer

19

选择需要查询的数据库,运行show table status;


6
SHOW TABLE STATUS FROM `database`;

以下内容将列出所有表的相关信息,包括它们是MyISAM还是InnoDB。如果你只想列出一个表的数据,可以使用下面的语法:

SHOW TABLE STATUS FROM `database` LIKE 'table';

更改表引擎:

ALTER TABLE `table` ENGINE=InnoDB;

*请注意,在使用LIKE进行匹配时,使用GRAVE ACCENT(`反引号)指定数据库名称和表名称,使用SINGLE QUOTE('单引号)指定比较字符串(表名称的一部分)。

`不等于'


2

以下是一个查询,列出了所有数据库中的所有表及其存储引擎:

Original Answer翻译成"最初的回答"

SELECT table_name, table_schema, engine
FROM information_schema.tables;

(From https://serverfault.com/a/244792/406647)




网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接