首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法添加或更新子行:外键约束失败

无法添加或更新子行:外键约束失败
EN

Stack Overflow用户
提问于 2015-06-16 12:53:37
回答 2查看 139关注 0票数 1

SQLSTATE23000:完整性约束违反: 1452 无法添加或更新子行:外键约束失败 (whnkepbk_Hland.interests,约束interests_ibfk_3外键(scale_id)引用scales_reference (scale_id))

我知道问题在于我必须为scale_id设置值以添加这条数据线。

我做的是:

代码语言:javascript
复制
    $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的内容:

代码语言:javascript
复制
</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的结构:

如果有人知道我做错了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-17 09:54:42

Ol和OI之间有什么区别--你甚至在堆栈溢出上都看不见它,"oi“和" OL”怎么样?是的,有很大的不同,我没有把OI放在"OI“上,但是我把OL放上去了,这就是问题所在。

票数 0
EN

Stack Overflow用户

发布于 2015-06-16 14:05:12

来自MySQL的Integrity constraint violation: 1452错误

对于支持外键的存储引擎,如果父表中没有匹配的候选键值,MySQL将拒绝任何试图在子表中创建外键值的插入或更新操作。

这意味着你要么:

  1. 插入具有interest值的scale_id表,该值在父表(scale_reference)中不存在。
  2. 查询中有错误并插入空的scale_id --从代码片段中不清楚是如何用来自MySQL变量的实际值替换所有占位符(:xx)的,而且我们看不到实际的查询,因为它被发送到MySQL服务器。

您可以尝试在不使用PHP的MySQL上直接运行所需的查询。如果它有效,那么PHP代码中就会出现问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30868170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档