如何更改表的引擎而不对表进行任何更改

时间:2015-04-18 04:08:11

标签: mysql sql database innodb full-text-indexing

我的桌子正在使用' InnoDB'存储引擎,当我尝试进行全文搜索'在它上面给我一个错误'使用过的表格不支持全文索引'   这就是为什么我试图改变我的桌面引擎来自' InnoDB'到了MyIsam'但它再次给了我错误' Cannont删除或更新表外键约束失败'。它链接到其他表格,我不想更改其中的表格和数据

我跑的时候



SHOW VARIABLES LIKE "%version%"

innodb_version	1.1.8
protocol_version	10
slave_type_conversions	
version	5.5.24
version_comment	MySQL Community Server (GPL)
version_compile_machine	x86
version_compile_os	Win64




这是我的sql版本和InnoDb版本请帮帮我。

1 个答案:

答案 0 :(得分:0)

选项1:升级到MySQL 5.6

由于您不想更改数据,因此您唯一的办法是升级到MySQL 5.6,因为InnoDB支持该版本的FULLTEXT索引。

我已经提到在DBA StackExchange中使用InnoDB特定的FULLTEXT选项(Full text search results in a large amount of time spent in 'FULLTEXT initialization'

如需完整说明,please read the MySQL Documentation on it

选项2:切换到MyISAM

您需要删除约束以使用

更改存储引擎
ALTER TABLE yourtable ENGINE=MyISAM;

选项3:使用MySQL复制

如果您有奴隶,请运行此

SET foreign_key_checks = 0;
SET unique_checks = 0;
STOP SLAVE;
ALTER TABLE childtable DROp CONSTRAINT ... ;
ALTER TABLE parenttable ENGINE=MyISAM;
ALTER TABLE childtable ENGINE=MyISAM;
ALTER TABLE ADD FULLTEXT ftindexname (columns);
START SLAVE;

这样,Master保留所有InnoDB,并且slave的表更改为MyISAM。

可以这样做是因为我在DBA StackExchange上写了一篇题为Can I have an InnoDB master and MyISAM slaves with Full-Text for searching?的文章,介绍了如何做到这一点。

执行此操作后,只需在Slave上执行FULLTEXT搜索。