将MyISAM转换为InnoDB数据库

时间:2014-03-31 15:50:53

标签: mysql sql database innodb myisam

我正在尝试使用以下语句将整个数据库从MyISAM转换为InnoDB:

use information_schema;

SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;') 
FROM information_schema.tables 
WHERE engine = "MyISAM" AND table_type = "BASE TABLE" AND table_schema = "database";

虽然我得到的结果是每个表都被更改,例如:

ALTER TABLE database.action ENGINE=InnoDB;

当我检查表引擎时,它们仍然是MyISAM。奇怪的是,如果我单独运行命令

ALTER TABLE action ENGINE='InnoDB';

它适用于该表。

有关如何进行整个数据库转换的任何提示?

1 个答案:

答案 0 :(得分:1)

您正在运行的SELECT语句只生成字符串;它生成的字符串不会作为SQL语句执行。您需要从该查询中获取结果集,然后将这些语句作为单独的步骤实际执行。