我正在尝试使用insert将数据插入表中。
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_orangedoor
。tbl_products
,CONSTRAINTtbl_products_ibfk_1
FOREIGN KEY(categoryname
)参考tbl_sub_categories
(sub_category_id
)ON DELETE CASCADE ON UPDATE CASCADE)
答案 0 :(得分:1)
好的,您在tbl_products
列的categoryname
上有一个外键。这引用了sub_category_id
中的tbl_sub_categories
列。
此陈述的关系意味着您必须在{{1}的categoryname
列中为'9'
(sub_category_id
)插入的值}}。它显然不存在。那个tbl_sub_categories
真的应该是一个字符串吗?
如果没有更多信息,技术上无法帮助您,但这里有:
有两种可能性:
9
中有categoryname
列,您插入的名称与您正在插入的tbl_sub_categories
直接相关(sub_category_id
)。
解决方案1
从51
中删除列categoryname
。在正确规范化的数据库中没有必要它。将外键更改为列tbl_products
上的约束,因为这是您正在查找的内容。
解决方案2
将外键更改为sub_category_id
和 categoryname
。这是为了阻止您插入与引用列不匹配的值。
您有一个名为sub_category_id
的单独表格。在这种情况下,您需要在外键中引用此表而不是tbl_categories
。