目前表的存储类型是innodb,我想在表上添加全文搜索,这只能在MYISAM
引擎上进行。
我尝试使用命令=> alter table film engine = myisam;
并得到错误:
1217 - Cannot delete or update a parent row: a foreign key constraint fails
请帮助!! 感谢。
答案 0 :(得分:6)
您必须通过FK约束找到数据库中引用该表的表:
识别表的外键约束。使用
SHOW CREATE TABLE `table_in_db_film`\G;
或
USE db_of_film_table;
SHOW TABLE STATUS LIKE 'film'\G
之后执行必要的陈述
ALTER TABLE film DROP FOREIGN KEY `ibfk_something`;
直到你删除所有约束(当然用你的约束名称替换 ibfk_something )。在此之后,你应该能够改变表引擎。
答案 1 :(得分:2)
如果不删除外键约束从而失去完整性,则无法将表的引擎更改为MyISAM。
最好使用两个引擎,MyISAM和InnoDB。将所有数据保存在InnoDB中,并在MyISAM中复制表格(或者只是要进行全文搜索的列)。这将需要一些机制(触发器)来自动化数据复制。
此处的其他选项:MySQL storage engine dilemma