我想使用sql查询,将我的所有数据库表引擎从MyISAM改为InnoDB 我使用了下面的查询。虽然它给了我一个成功的信息,但它不起作用。我的桌面存储引擎仍然是MyISAM。
SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') as ExecuteTheseSQLCommands
FROM information_schema.tables WHERE table_schema = 'name_of_the_database'
ORDER BY table_name DESC;
答案 0 :(得分:1)
如果您对PHP有所了解,那么此脚本将为您提供帮助:
如果您对Shell脚本有所了解,那么此链接将为您提供帮助:
http://shrubbery.homeip.net/c/display/W/Shell+and+MySQL#ShellandMySQL-ConvertMyISAMtablestoInnoDB(域名由维基所有者更改)
答案 1 :(得分:1)
我的解决方案-启动mysql shell并粘贴:
SELECT CONCAT('ALTER TABLE ',CONCAT(TABLE_SCHEMA,'.',TABLE_NAME),'
ENGINE=InnoDB;')
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='MyISAM'
AND TABLE_SCHEMA NOT IN ('MYSQL','INFORMATION_SCHEMA','PERFORMANCE_SCHEMA','SYS')
INTO OUTFILE '/tmp/mysql.conversions';
SOURCE /tmp/mysql.conversions;
答案 2 :(得分:0)
请参阅http://dev.mysql.com/doc/refman/5.0/en/converting-tables-to-innodb.html
ALTER TABLE t1 ENGINE=InnoDB;
编辑:哦等等,你生成了这种语句,但它们没有用?