SQLSTATE [23000]:完整性约束违规:1452
无法添加或更新子行:外键约束失败
(
whnkepbk_Hland
。interests
,CONSTRAINTinterests_ibfk_3
外键(scale_id
)参考scales_reference
(scale_id
))
我知道问题是因为我必须将value设置为scale_id以添加此数据行。
我这样做:
$requete = "INSERT INTO interests (onetsoc_code,element_id,scale_id,data_value) VALUES (:onetsoc_code,:element_id,:scale_id,:data_value)";
...
$InsertMetier->bindParam(':scale_id', $scale);
var_dump($scale);
var_dump($InsertMetier);
$InsertMetier->execute();
这里是var_dump的内容:
</pre>Ol<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'Ol'</font>
'INSERT INTO interests (onetsoc_code,element_id,scale_id,data_value) VALUES (:onetsoc_code,:element_id,:scale_id,:data_value)'
我的scale变量根据var_dump确实有一个值,我的查询听起来合法。
这是我的数据库(感兴趣)的截图:
scales_reference
:
感兴趣的结构:
scale_reference
的结构:
如果有人知道我做错了什么。
答案 0 :(得分:1)
Integrity constraint violation: 1452
:
对于支持外键的存储引擎,MySQL拒绝任何INSERT 或尝试在a中创建外键值的UPDATE操作 子表如果没有匹配的候选键值 父表。
这意味着你要么:
interest
值插入scale_id
表格,该值不存在于父表格中(scale_reference
)。scale_id
- 从代码片段中不清楚您是如何用PHP变量中的实际值替换所有占位符(:xx
)而我们不会这样做的。看到发送到MySQL服务器的实际查询。您可以尝试在没有PHP的情况下直接在MySQL上运行所需的查询。如果它有效,那么你的PHP代码就会出现问题。
答案 1 :(得分:0)
Ol和OI之间有什么区别,你甚至无法在stackoverflow上看到它,“oi”和“ol”怎么样,是的,有一个很大的区别,我没有放“OI”,但我把OL放那就是问题。