第 44.1 节:基本转换

ALTER TABLE foo ENGINE=InnoDB;

这将转换表,但不会处理引擎之间的任何差异。对于小表,大多数差异无关紧要。但对于更繁忙的表,应考虑其他转换注意事项。

第 44.2 节:转换一个数据库中的所有表

要轻松转换一个数据库中的所有表,请使用以下方法:

SET @DB_NAME = DATABASE();

SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') AS sql_statements
FROM information_schema.tables
WHERE table_schema = @DB_NAME
  AND ENGINE = 'MyISAM'
  AND TABLE_TYPE = 'BASE TABLE';

注意: 你应该已连接到你的数据库,以便 DATABASE() 函数能够工作,否则将返回 NULL。这主要适用于 MySQL 官方客户端,因为它允许连接时不指定数据库。

运行此 SQL 语句以检索数据库中的所有 MyISAM 表。

最后,复制输出并执行其中的 SQL 查询。