0

挿入を使用してテーブルにデータを挿入しようとしています。

INSERT INTO tbl_products (user_id,productkey,listitemname,itemdescription
      ,thumbnail,rollover,itemfile,themepreview1,themepreview2,themepreview3
      ,themepreview4,categoryname,sub_category_id,browsercompatiable,filesinclude
      ,noofcolumns,layout,demourl,itemtags,create_date,update_date,license_number) 
VALUES (117,'395cb2e171ac','Baby','This is baby'
      ,'a4fb673be7b5','d6232cad4955','e3fe02d02c82','dc7067dffd0a','72f48e9a9585'
      ,'35b016bf135c','6e36d212f3c0','9',51,'ie8,','ie8,',1,1,'http://asdsaf.com'
      ,'rwreewr','2012-06-30','2012-06-30','1565-5827-7289-918')

ただし、データは挿入されず、MySQLは次のエラーを表示します。

1452-子行を追加または更新できません:外部キー制約が失敗します(wwwwdmar_orangedoortbl_products、CONSTRAINT tbl_products_ibfk_1FOREIGN KEY(categoryname)REFERENCES tbl_sub_categoriessub_category_id)ON DELETE CASCADE ON UPDATE CASCADE)

4

1 に答える 1

1

さて、あなたはtbl_products列に外部キーを持っていますcategoryname。これは、の列sub_category_idを参照しますtbl_sub_categories

この記述された関係は、の列に( )に挿入する値が必要であることを意味します。明らかに存在しません。それは本当に文字列である必要がありますか?categoryname'9'sub_category_idtbl_sub_categories9

より多くの情報がなければ、あなたを助けることは技術的に不可能ですが、ここに行きます:

2つの可能性があります:

仮説1

に列categorynametbl_sub_categoriesあり、挿入する名前は、挿入する名前に直接関連していsub_category_idます(51)。

解決策1から
カラムを削除します。適切に正規化されたデータベースに存在する必要はありません。外部キーを列の制約になるように変更します。これは、検索しているように見えるためです。categorynametbl_productssub_category_id

解決策2
外部キーをとの両方にあるように変更しcategoryname ます sub_category_id。これは、参照列と一致しない値を挿入しないようにするためです。

仮説2

のような別のテーブルがありますtbl_categories。この場合、tbl_sub_categories外部キーではなくこのテーブルを参照する必要があります。

于 2012-06-30T15:58:28.820 に答える