2012-02-04 8 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

+0

MyIsamエンジンに変更する必要はありません –

答えて

6

あなたはFK制約によって、このテーブルを参照するデータベースのテーブルを見つける必要があります。

は、テーブルの外部キー制約を識別します。あなたはすべての制約(もちろん、あなたの制約名とをibfk_something を置き換える)ドロップするまでに必要な書類

ALTER TABLE film DROP FOREIGN KEY `ibfk_something`; 

を実行

SHOW CREATE TABLE `table_in_db_film`\G; 

または

その後
USE db_of_film_table; 
SHOW TABLE STATUS LIKE 'film'\G 

を使用しますか。その後、テーブルエンジンを変更できるはずです。

2

外部キー制約を削除せずにインテグリティを失うことなく、テーブルのエンジンをMyISAMに変更することはできません。

MyISAMとInnoDBの両方のエンジンを使用する方がよいでしょう。すべてのデータをInnoDBに保存し、MyISAMでテーブル(または全文検索をしたい列のみ)を複製します。これにより、データの複製を自動化するためのメカニズム(トリガー)が必要になります。ここ

その他のオプション:MySQL storage engine dilemma

関連する問題