我的表正在使用“InnoDB”存储引擎,当我尝试对其进行“全文搜索”时出现错误“所用表不支持全文索引” 这就是为什么我试图将我的表引擎从“InnoDB”更改为“MyIsam”,但它再次给我错误“Cannont delete or update table foreign key contraint fail”。它链接到其他表,我不想更改其中的表和数据
当我运行时
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:升级到 MySQL 5.6
由于您不想更改数据,您唯一的办法就是升级到 MySQL 5.6,因为 InnoDB 在该版本中支持 FULLTEXT 索引。
我已经提到在 DBA StackExchange ( Full text search results in a large amount of time spent in 'FULLTEXT initialization' ) 中使用特定于 InnoDB 的 FULLTEXT 选项
如需全面说明,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? 的帖子关于如何做到这一点。
完成此操作后,只需在从站上执行全文搜索即可。
关于mysql - 如何在不对表进行任何更改的情况下更改表的引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712747/