如何在不对 table 进行任何更改的情况下更改 table 的引擎
How to change engine of table without making any changes to table
我的 table 正在使用 'InnoDB' 存储引擎,当我尝试对其执行 'full text search' 时,它给我一个错误 'The used table doesn't support full text索引'
这就是为什么我试图将我的 table 引擎从 'InnoDB' 更改为 'MyIsam' 但它再次给我错误 'Cannont delete or update table foreign key contraint fail'。它链接到其他 table,我不想同时更改 table 和其中的数据
当我运行
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:升级到 MySQL5.6
由于您不想更改数据,唯一的办法就是升级到 MySQL 5.6,因为 InnoDB 在该版本中支持 FULLTEXT 索引。
我已经提到在 DBA StackExchange (Full text search results in a large amount of time spent in 'FULLTEXT initialization')
中使用 InnoDB-specific 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 中写了一个 post 标题为 Can I have an InnoDB master and MyISAM slaves with Full-Text for searching? 的关于如何做到这一点的文章。
完成此操作后,只需在从站上执行全文搜索即可。
我的 table 正在使用 'InnoDB' 存储引擎,当我尝试对其执行 'full text search' 时,它给我一个错误 'The used table doesn't support full text索引' 这就是为什么我试图将我的 table 引擎从 'InnoDB' 更改为 'MyIsam' 但它再次给我错误 'Cannont delete or update table foreign key contraint fail'。它链接到其他 table,我不想同时更改 table 和其中的数据
当我运行
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:升级到 MySQL5.6
由于您不想更改数据,唯一的办法就是升级到 MySQL 5.6,因为 InnoDB 在该版本中支持 FULLTEXT 索引。
我已经提到在 DBA StackExchange (Full text search results in a large amount of time spent in 'FULLTEXT initialization')
中使用 InnoDB-specific 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 中写了一个 post 标题为 Can I have an InnoDB master and MyISAM slaves with Full-Text for searching? 的关于如何做到这一点的文章。
完成此操作后,只需在从站上执行全文搜索即可。