在Mysql中更改表的存储引擎

时间:2012-02-04 09:29:00

标签: mysql

目前表的存储类型是innodb,我想在表上添加全文搜索,这只能在MYISAM引擎上进行。 我尝试使用命令=> alter table film engine = myisam; 并得到错误:

1217 - Cannot delete or update a parent row: a foreign key constraint fails

请帮助!! 感谢。

2 个答案:

答案 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