0

ここに2つのテーブルがあります。

フルサイズの画像

ここに画像の説明を入力してください

courses:parent<->child.parent_cid外部キー<=>courses.idcourses:parent<->child.child_cid<=>を作成して、それらの間に関係を作成しようとしています。courses.id

SQLはそのように見えます

ALTER TABLE `courses: parent<->child` ADD CONSTRAINT `cpc.parent_cid_courses.id` FOREIGN KEY (`parent_cid`) REFERENCES `courses` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE `courses: parent<->child` ADD CONSTRAINT `cpc.child_cid_courses.id` FOREIGN KEY (`child_cid`) REFERENCES `courses` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

このエラーメッセージを取得する

ここに画像の説明を入力してください

私は何が間違っているのですか?助言がありますか?

4

2 に答える 2

1

私の最初の提案:英数字とアンダースコアのみを使用して、子テーブルと外部キー制約の名前を変更します。

エラーメッセージは、子テーブルに無効な外部キー値があることを示しています。ALTER TABLEステートメントを実行する前に、MySQLサーバーに次のような値を無視するように指示できます。

set foreign_key_checks = 0;

または、制約を追加する前に、欠落している親行を追加するか、無効な子行を削除することにより、データを修正できます。

于 2012-07-25T14:34:47.520 に答える
1

外部キーを追加しようとしています。エラーは、子テーブルに親テーブルに存在しないデータがあることを意味します。

あなたの場合cpc.parent_cid_courses.idparent_cid値が間違っているため、親フィールドに対応する値がありませんcoursesid

于 2012-07-25T14:35:43.093 に答える