2009-10-28 120 views
18
  • 如何确定mysql数据库的类型:是InnoDB还是MyISAM?
  • 如何将MyISAM转换为InnoDB或反之亦然?
+0

你使用任何数据库管理系统?像phpMyAdmin或SQLyog? – 2009-10-28 15:40:40

+0

不,我没有使用任何数据库管理系统。 – Rachel 2009-10-28 15:41:11

+0

我在尝试alter table the_table engine = InnoDB;但看起来引擎并没有改变,是因为我没有权利,或者可能是什么原因? – Rachel 2009-10-28 16:47:29

回答

31

为了确定正在使用的一表的存储引擎,可以使用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 2009-10-28 16:46:57

+0

”如果存储引擎不支持尝试的ALTER TABLE操作,则可能会导致警告。可以使用SHOW WARNINGS显示此类警告“ – 2018-02-20 13:13:24

10

选择有问题的数据库和运行show table status;

3
SHOW TABLE STATUS FROM `database`; 

将列出所有的所有表,开始与他们是否是的MyISAM或InnoDB的。如果你希望只列出关于1个表数据,下面的语法,可以使用*:

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

改变表引擎:

ALTER TABLE `table` ENGINE=InnoDB; 

*注意使用重音符(`反引号)为数据库名称和表名以及LIKE后的比较字符串(表名的一部分)的SINGLE QUOTE(')。

'!='

相关问题