我知道我可以单独发出一个alter table来将表存储从MyISAM更改为InnoDB。
我想知道是否有一种方法可以快速地将它们全部更改为InnoDB?
发布于 2010-10-05 00:50:57
发布于 2012-02-29 09:00:46
运行此SQL语句(在MySQL客户端、phpMyAdmin或任何地方)以检索数据库中的所有MyISAM表。
属性的值替换
变量与您的数据库名称。
SET @DATABASE_NAME = 'name_of_your_db';
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements
FROM information_schema.tables AS tb
WHERE table_schema = @DATABASE_NAME
AND `ENGINE` = 'MyISAM'
AND `TABLE_TYPE` = 'BASE TABLE'
ORDER BY table_name DESC;
然后,复制输出并作为新的SQL查询运行。
发布于 2015-06-04 23:46:57
SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;')
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='MyISAM'
AND table_schema = 'mydatabase';
就像一个护身符。
这将为您提供包含可在批处理中运行的alter查询的所有表的列表
https://stackoverflow.com/questions/3856435
复制相似问题