2012-02-04 84 views
5

當前表的存儲類型是innodb,我想在表上添加全文搜索,這隻能在MYISAM引擎上實現。 我嘗試使用命令=>alter table film engine = myisam; 並得到了錯誤:在Mysql中更改表的存儲引擎

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

幫助請! 謝謝。

+0

然後刪除所有外鍵約束。但是,最好用文本字段創建另一個表格 – zerkms 2012-02-04 09:30:59

+0

您不需要將這些表單更改爲MyIsam引擎就可以更好地創建一個新的MyIsam表格 – 2012-02-04 09:39:11

回答

6

你必須找到在數據庫中,通過一鍵約束參照此表的表:

標識外鍵約束的表。要麼使用

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與約束名)。在此之後,你應該能夠改變表引擎。

2

如果不刪除外鍵約束並因此失去完整性,您無法將表的引擎更改爲MyISAM。

使用兩個引擎MyISAM和InnoDB會更好。將所有數據保留在InnoDB中,並在MyISAM中複製該表(或者只是希望成爲全文搜索的列)。這將需要一些機制(觸發器)使數據重複自動化。

此處的其他選項:MySQL storage engine dilemma