MySQL建立外键约束失败 ERR 1452  _MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2307 | 回复: 0   主题: MySQL建立外键约束失败 ERR 1452          下一篇 
ljss
注册用户
等级:新兵
经验:56
发帖:53
精华:0
注册:2012-1-19
状态:离线
发送短消息息给ljss 加好友    发送短消息息给ljss 发消息
发表于: IP:您无权察看 2014-12-17 9:58:18 | [全部帖] [楼主帖] 楼主

万恶的MySql,今天创建个外键,提示无法创建,Err 1452

百度搜索到的答案:这是因为表设置了外键约束,而你试图插入一条外键字段所在表纪录不存在的一个值.就会报1452错.
比如a,b两表,a表外键id值来自b表的ID,当你在a表中插入一条纪录时,id字段用了不在b表id值范围内的值,就会报此错。

好吧,那开始检查主表字段是否有外键表中不存在的数据,我这里就两条数据,轻而易举就完成,答案是没有。一切的数据都是正常,这是一个非常奇怪的地方。

再次百度:

大致有以下原因:

1、外键的引用类型不一样,主键是int外键是char
2、找不到主表中 引用的列
3、主键和外键的字符编码不一致
4、还有要建立外键的话,要先建立索引。没有建立索引也会出错。

一一排查过滤,哥的表,哥的字段,哥的编码,一切都是非常非常正常的,这?!难道编程还要靠人品?!!!

一气之下,我决定相信关键字:MYSQL ERR 1452 的搜索结果,即上面列的原因2、找不到主表中 引用的列,虽然我这里的都能找到,看起来是这样的。好吧,删除主表所有的数据,再次执行,居然过了!!!我都有点怀疑之前是我眼花了,不过再次到程序中查看,因为之前查出来的数据在缓存中数据库的删除还没有影响到这里,NO,不是我眼花。这是什么原因呢?? 再次百度,google,都没有发现任何蛛丝马迹,好吧,暂且告一段落。

谨以此录,献给跟我一样人品不好的兄弟,也希望有一天,哪位大神不小心路过此地,一时兴起,给了俺答案。更希望有一天,我自己研究懂了在来更新此录MySQL建立外键约束失败 ERR 1452 - yoriin.重戚 - yoriin.重戚 的博客

语句如下

ALTER TABLE `om_assets`
ADD CONSTRAINT `FK_OM_ASSEST_ASSEST_TYPE_ID` FOREIGN KEY (`TYPE`) REFERENCES
`data_assets_type` (`ID`);


提示如下:

[Err] 1452 - Cannot add or update a child row: a foreign key constraint fails (`gzmanagers_om`.`#sql-4d0_140`, CONSTRAINT `FK_OM_ASSEST_ASSEST_TYPE_ID` FOREIGN KEY (`TYPE`) REFERENCES `data_assets_type` (`ID`))


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论