仅当引擎不是innodb时MYSQL查询更改表引擎
我想运行一个查询,仅当当前引擎不是INNODB时才更改表的引擎(alter table仅当引擎不是innodb时MYSQL查询更改表引擎,mysql,if-statement,innodb,alter,Mysql,If Statement,Innodb,Alter,我想运行一个查询,仅当当前引擎不是INNODB时才更改表的引擎(alter tabletable1engine=INNODB) 我该怎么做 更新: 我遇到一个例子,一个查询试图改变表的引擎,而它已经是innodb。您可以使用 ALTER TABLE t ENGINE = InnoDB; 您可以使用此查询。如果数据库引擎已经InnoDB,那么什么也不会发生。 输出将是 MySQL returned an empty result set (i.e. zero rows) 如果引擎不在InnoD
table1
engine=INNODB)
我该怎么做
更新:
我遇到一个例子,一个查询试图改变表的引擎,而它已经是innodb。您可以使用
ALTER TABLE t ENGINE = InnoDB;
您可以使用此查询。如果数据库引擎已经InnoDB,那么什么也不会发生。
输出将是
MySQL returned an empty result set (i.e. zero rows)
如果引擎不在InnoDB中,那么它将转换为InnoDB。您可以使用
ALTER TABLE t ENGINE = InnoDB;
您可以使用此查询。如果数据库引擎已经InnoDB,那么什么也不会发生。
输出将是
MySQL returned an empty result set (i.e. zero rows)
如果引擎不在InnoDB中,则它将转换为InnoDB。如果表已在InnoDB上,则该命令无效 您可以从信息\u架构查询表引擎:
SELECT `ENGINE` from `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA`='my_schema' AND `TABLE_NAME`='table1';
如果表已在InnoDB上,则该命令无效 您可以从信息\u架构查询表引擎:
SELECT `ENGINE` from `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA`='my_schema' AND `TABLE_NAME`='table1';
提供了有关将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命令行工具中。提供了有关将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命令行工具中