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的命令行工具。