2017-10-31 21 views
0

私が間違いを犯しているかどうかは分かりませんが、助けてください。テーブルに単純な外部キー制約を追加する

ALTER TABLE tyresys_tyre_model 
ADD CONSTRAINT fk_manufacturer_tyre_model 
FOREIGN KEY (ManufacturerId) 
REFERENCES tyresys_manufacturer(Id) 
ON DELETE RESTRICT 
ON UPDATE CASCADE; 

データベースエラー

1452 - 子行を追加または更新できません:外部キー制約が失敗する(database#sql-2494_108、CONSTRAINT fk_manufacturer_tyre_model FOREIGN KEY(ManufacturerIdtyresys_manufacturerIdを参照)ON。 UPDATE CASCADE)

表 - tyresys_m anufacturer

Id - int 

Name 

表 tyresys_tyre_model

Id 

ManufacturerId - int 

Name 

これを行う簡単な方法はありますか? SQLクエリを実行する代わりに?

+1

それらのテーブルがすでに取り込まれを取得するには、次のクエリを実行? –

+1

これは、テーブルに既に存在するデータが原因で発生している可能性があります。一度それを確認できますか? – Manwal

+0

お手伝いいただきありがとうございます。間違ったキーを持つtyre_modelテーブルのデータがありました。原因となったエラー –

答えて

0

ほとんどの場合、tyresys_tyre_modelテーブルにはtyresys_manufacturerテーブルに含まれていない値ManufacturerIdが含まれています。最初にdelete/updateのレコードが必要です。

あなたはそれらのManufacturerId

SELECT ManufacturerId FROM tyresys_tyre_model WHERE tyresys_tyre_model NOT IN 
(SELECT id FROM tyresys_manufacturer) 
+0

tyre_modelテーブルにデータがあり、それを削除すると動作します。 ありがとう、私は昨夜この問題に悩まされていたので、強調しました。単純な間違いがそれらすべての研究を台無しにしました。 –

関連する問題