第 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 查询。