2011-12-24 16 views
2

外部キーを追加しようとするとphpMyAdminで何らかのエラーが発生し、何が問題なのかわかりません。ちょうど "FKが失敗"と言います。InnoDBに外部キーを追加できません

問題が何であるか教えてください。

Error 

SQL query: 

ALTER TABLE `hotel` ADD FOREIGN KEY (`type_id`) REFERENCES `hotel`.`hotel_type` (
`id` 
) ON DELETE CASCADE ON UPDATE CASCADE ; 

MySQL said: Documentation 
#1452 - Cannot add or update a child row: a foreign key constraint fails (`hotel`.`#sql-cfc_e`, CONSTRAINT `#sql-cfc_e_ibfk_2` FOREIGN KEY (`type_id`) REFERENCES `hotel_type` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) 
+0

同じテーブルにリンクする外部キーを追加しようとしていますか?外部キーは、外部テーブル(ホテル以外のテーブル)へのリンクです。あなたは何をしようとしているのですか? –

+0

基本的に私はホテルのカテゴリーのテーブルを持っています。私はカテゴリーテーブルプライマリキーをホテルテーブル – Symfony

+0

に追加しています。テーブルのforegnキーを受け入れません。 – Symfony

答えて

6

両方のテーブルの列が同じデータ型であることを確認してください:

彼らは同じ型ではない場合、あなたはあなたのFK制約を追加することはできません。

- 編集 - あなたの応答に基づいて

、列は同じデータ型であるため、それはあなたが(値がhotel_typesテーブルに存在しない)hotels.type_id列内の無効な値を持っていることを意味します。 hotels.type_id列の値を確認し、列がhotel_types.id列に存在することを確認してください。

+0

はい2回同じですか? – Symfony

2

外部キーを作成できない理由はたくさんあります。私は非常に興味深いarticleを見つけました。私はあなたにそれを詳しく読むよう勧めます。多分何かがあなたを助けるでしょう。 "FOREIGN KEY Constraints"に関しては、MySQLのマニュアルで非常に重要な情報を見つけることもできます。

これが役に立った。

1

テーブルには、もはや他のテーブルに存在しないデータがありますが、実際にはこれは外部キーのルールとは異なります。

データを必要とせず、両方のテーブルを切り捨て、外部キーを追加する場合は、すべての外部キーを1つずつ追加する必要があります。ここで

は、それらの行を見つけますクエリです:

sourcecodes_tagsタグから

選択sourcecode_idにsc.idがどこにあるかtags.sourcecode_id = sc.id

にsourcecodesのSCに参加左ヌル;これは古いですが

0

私は、私はこれを解決する方法は、エンコードと照合が何らかの理由で異なっていた両側で同じであったことを確認することであったことを共有するだろうと思った、ON DELETE CASCADE ON UPDATE CASCADE

+1

このエラーはどうやって解決されますか? – Kermit

0

を削除します。

これで問題が解決しました。

関連する問題