Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅当引擎不是innodb时MYSQL查询更改表引擎_Mysql_If Statement_Innodb_Alter - Fatal编程技术网

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

仅当引擎不是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

我想运行一个查询,仅当当前引擎不是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。

您可以使用

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