【问题标题】:How can I determine type of mysql database : whether it is InnoDB or MyISAM?如何确定 mysql 数据库的类型:它是 InnoDB 还是 MyISAM?
【发布时间】:2010-12-10 22:02:45
【问题描述】:
  • 如何确定 mysql 数据库的类型:是 InnoDB 还是 MyISAM?
  • 如何将 MyISAM 转换为 InnoDB,反之亦然?

【问题讨论】:

  • 您使用任何数据库管理系统吗?像 phpMyAdmin 或 SQLyog?
  • 没有。我没有使用任何数据库管理系统。
  • 我正在尝试更改表 the_table engine = InnoDB;但似乎引擎没有改变,是因为我没有权利还是可能是什么原因?

标签: sql mysql types


【解决方案1】:

要确定表使用的存储引擎,您可以使用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;

当然,您可以指定任何可用的存储引擎。

【讨论】:

  • 我正在尝试更改表 the_table engine = InnoDB;但似乎引擎没有改变,是因为我没有权利还是可能是什么原因?
  • "如果存储引擎不支持尝试的 ALTER TABLE 操作,可能会导致警告。此类警告可以通过 SHOW WARNINGS 显示"
【解决方案2】:

选择有问题的数据库并运行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 后使用 GRAVE ACCENT (` backtick) 作为数据库名和表名,使用单引号 (') 作为比较字符串(表名的一部分)。

    ` != '

    【讨论】:

      【解决方案4】:

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

      SELECT table_name, table_schema, engine
      FROM information_schema.tables;
      

      (来自https://serverfault.com/a/244792/406647

      【讨论】:

        【解决方案5】:

        【讨论】:

          【解决方案6】:
          猜你喜欢
          • 2011-11-21
          • 2016-12-23
          • 1970-01-01
          • 1970-01-01
          • 2011-05-29
          • 1970-01-01
          • 2011-04-10
          • 2011-04-04
          • 2015-09-26
          相关资源
          最近更新 更多