MySQL查询修改表的发动机只有当发动机没有InnoDB的

问题描述:

我想运行一个查询表改变的引擎(ALTER TABLE table1 ENGINE = INNODB)仅在当前引擎不INNODB。MySQL查询修改表的发动机只有当发动机没有InnoDB的

我该怎么做?

更新: 我有一个查询试图改变,而其已经的InnoDB表的发动机的情况。

您可以使用

ALTER TABLE t ENGINE = InnoDB; 

您可以使用此查询。如果db引擎已经是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的,包括几个小窍门:

要生成所有的改变把所有的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的命令行工具。