繁体   English   中英

MYSQL查询仅当引擎不是innodb时才更改Alter表引擎

[英]MYSQL query Alter table engine only if engine not innodb

我想只在当前引擎不是INNODB的情况下运行一个更改表引擎的查询(ALTER TABLE table1 ENGINE = INNODB)。

我怎样才能做到这一点?

更新:我遇到了一个查询,试图在表已为innodb时更改表的引擎。

您可以使用

ALTER TABLE t ENGINE = InnoDB;

您可以使用此查询。 如果数据库引擎已经是InnoDB,那么什么也不会发生。 输出将是

MySQL returned an empty result set (i.e. zero rows)

如果引擎不在InnoDB中,则它将转换为InnoDB。

如果表已经在InnoDB上,则该命令无效。

您可以从information_schema查询表引擎:

SELECT `ENGINE` from `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA`='my_schema' AND `TABLE_NAME`='table1';

http://mysql.rjweb.org/doc.php/myisam2innodb#generating_alters提供了一些有关从MyISAM转换为InnoDB的技巧,包括:

生成所有ALTER以将所有MyISAM表转换为InnoDB:

SELECT  CONCAT('USE ', table_schema, ';  ALTER TABLE ', table_name, ' ENGINE=InnoDB;')
    FROM  information_schema.tables
    WHERE  engine = 'MyISAM'
      AND  table_schema NOT IN ('mysql', 'information_schema', 'performance_schema');

然后将输出复制并粘贴到mysql命令行工具中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM