我最近将我的CPanel服务器从mySQL 5.5升级到了mySQL 5.6,因为它现在支持对InnoDB进行全文search。 现在,我对mySQL并不是很了解,所以我想知道除了运行之外,还有什么特别的东西需要记住
ALTER TABLE my_table ENGINE=InnoDB;
我的几个表都有全文索引。 他们会发生什么事? 索引是否会自动转换? 或者之后我是否必须手动重新构build它们?
如果您不更改任何FULLTEXT启动参数,则从MyISAM到InnoDB的转换将负责为InnoDB创buildFULLTEXT索引。
如果您可以从命令行界面连接到MySQL,请运行此查询
SELECT DISTINCT table_schema,table_name FROM information_schema.statistics WHERE index_type='FULLTEXT';
这会给你每个有FULLTEXT索引的表。
使用该查询,运行此查询
SELECT CONCAT('ALTER TABLE ',B.table_schema,'.',B.table_name,' ENGINE=InnoDB') Cmd FROM (SELECT DISTINCT table_schema,table_name FROM information_schema.statistics WHERE index_type='FULLTEXT') A INNER JOIN information_schema.tables B USING (table_schema,table_name) WHERE B.engine='MyISAM';
这将向您展示将MyISAM表与FULLTEXT索引转换为InnoDB的所有命令。
您可以将这些命令转储到一个文本文件。
SQL="SELECT CONCAT('ALTER TABLE ',B.table_schema,'.',B.table_name,' ENGINE=InnoDB')" SQL="${SQL} FROM (SELECT DISTINCT table_schema,table_name" SQL="${SQL} FROM information_schema.statistics" SQL="${SQL} WHERE index_type='FULLTEXT') A" SQL="${SQL} INNER JOIN information_schema.tables B" SQL="${SQL} USING (table_schema,table_name)" SQL="${SQL} WHERE B.engine='MyISAM'" mysql -uroot -p -ANe"${SQL}" > ConversionScript.sql less ConversionScript.sql
这将创build转换脚本并让您查看它。
如果您对脚本的内容感到满意,请login到mysql并运行以下命令:
mysql> source ConversionScript.sql