2012-03-01 15 views
0

私のDBにデータを保存するとき、私は、このエラーを取得しています:キー制約が失敗する - それはどういう意味ですか?

SQLSTATE [23000]:整合性制約違反:1452は、子行を追加または更新できません:。 外部キー制約が失敗した(mydbsamplelist_item、 CONSTRAINT FK_SAMPLELIST_ITEM_SAMPLELIST FOREIGN KEY(samplelist_id)UPDATE CASCADE ON DELETE CASCADE ON samplelistsamplelist_id)を参照)

ない問題が何であるかを確認してください。

+0

私はあなたのmysqlエンジンを知っているかもしれませんか?それはinnoDBかMyISAMです –

+0

わかりません、私はテーブルsamplelistとsamplelist_itemをinnodbに設定しました。私のdbのテーブルのいくつかはmyisamです、それは確かです。 – EOB

+0

innoDbが外部キーをサポートしているかどうかを確認しました –

答えて

2

外部キーを持つテーブルに行を追加しようとしているように聞こえるが、あなたは、外部キー列に指定している値は、外部テーブルに一致するものを持っていません。

+0

から告げる私の答えをチェックする疑いがある....このためのものであってもよいですか? – EOB

+0

'samplelist_item'の' samplelist_id'に設定しようとしている値に 'samplelist'に一致する行がありません。 – VeeArr

+0

サンプルリストのsamplelist_idはありますか? – EOB

1

Refこれはからの問題だろうマニュアル

InnoDBは親テーブルには一致する候補キー値が存在しない場合は、子表の外部キー値を作成しようとする任意のINSERTまたはUPDATE操作を拒否。 UPDATEまたはDELETE操作が、子表の一致する行を持つ親表のキー値に影響する場合、結果はFOREIGN KEY句のON UPDATEおよびON DELETE副次句を使用して指定された参照アクションに依存します。 InnoDBは、取るべきアクションに関する5つのオプションをサポートしています。 ON DELETEまたはON UPDATEが指定されていない場合、デフォルトアクションはRESTRICTです。

+0

しかし、鉱山,,することはあなたの子供のテーブル可能性があるため – EOB

+0

はい、それは希望...それはUPDATE/DELETEを持っていると言うには,,あなたの親への参照を持っています。 –

関連する問題