我正在尝试使用以下语句将整个数据库从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';
它适用于该表。
有关如何进行整个数据库转换的任何提示?
答案 0 :(得分:1)
您正在运行的SELECT语句只生成字符串;它生成的字符串不会作为SQL语句执行。您需要从该查询中获取结果集,然后将这些语句作为单独的步骤实际执行。