SQLSTATE23000:完整性约束违反: 1452 无法添加或更新子行:外键约束失败 (
whnkepbk_Hland.interests,约束interests_ibfk_3外键(scale_id)引用scales_reference(scale_id))
我知道问题在于我必须为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)'根据var_dump,我的scale变量确实有一个值,我的查询听起来是合法的。
这里是我的数据库的截图(感兴趣):

scales_reference

兴趣结构:

scale_reference的结构:

如果有人知道我做错了什么。
发布于 2015-06-17 09:54:42
Ol和OI之间有什么区别--你甚至在堆栈溢出上都看不见它,"oi“和" OL”怎么样?是的,有很大的不同,我没有把OI放在"OI“上,但是我把OL放上去了,这就是问题所在。
发布于 2015-06-16 14:05:12
来自MySQL的Integrity constraint violation: 1452错误
对于支持外键的存储引擎,如果父表中没有匹配的候选键值,MySQL将拒绝任何试图在子表中创建外键值的插入或更新操作。
这意味着你要么:
interest值的scale_id表,该值在父表(scale_reference)中不存在。scale_id --从代码片段中不清楚是如何用来自MySQL变量的实际值替换所有占位符(:xx)的,而且我们看不到实际的查询,因为它被发送到MySQL服务器。您可以尝试在不使用PHP的MySQL上直接运行所需的查询。如果它有效,那么PHP代码中就会出现问题。
https://stackoverflow.com/questions/30868170
复制相似问题