mySql插入数据,关于Cannot add or update a child row: a foreign key constraint fails的问题,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mySql插入数据,关于Cannot add or update a child row: a foreign key constraint fails的问题,相关的知识,希望对你有一定的参考价值。

具体是这样的三张表,评论表t_reply,新闻表t_news,用户表t_user, news表和user表的主键都是reply表的外键,单独在mysql中向reply表中插入数据是可以的,但是在程序中先把news表和user表的主键查询出来再向reply表中插入一条数据就报这个错,确切的说只是news表的那个主键有问题,把它写成一个具体的数据(这个数据是news表的主键)是可以的,很郁闷啊,程序中我查询出来的那个news表主键的数据答应出来也是正确的,但是就是会报这个错,user表和news表的设置是一样,但是只是news表的主键的值会出现这个错误。本人实际项目经验不足,希望有知道的能帮忙解决下,必将感激不尽!谢谢了!
如何可以也可以直接hi我,一般都在线。

数据库表已有数据,但是不符合你要增加的外键原则,建议将相关的表的数据清空再尝试。 参考技术A 同样问题,可以先show_sql,看语句是否正确,然后到数据库执行以下,看是不是语句本身就有问题 参考技术B 说说的问题出现的过程和我解决的方法:
创建一个score表,外键有2个,分别是student表的id,course表的id
create table scoree( id int auto_increment primary key not null, scoreint decimal(4,1) not null, stu_id int not null, cou_id int not null, foreign key(stu_id) references student(id), foreign key(cou_id) references course(id) );
之后向score表插入数据
insert into score(1,1,1,100.0) //id,stu_id cou_id
这是就报错了,就是你的那个错误 。原因是 stu_id为1也就是student中的id为1的这行数据不存在,我没向student表里面添加数据。
希望能帮助你。
参考技术C 清空一下你要设置外键的表就可以了

MySQL设置外键报错 #1452 - Cannot add or update a child row: a foreign key constraint fails 解决方法

  MySQL数据库,当我尝试在A表中设置B表的主键为外键时,报出错误:#1452 - Cannot add or update a child row: a foreign key constraint fails 

 

  

  于是去搜索了一下 "#1452 - Cannot add or update a child row: a foreign key constraint fails" 的含义与解决方法,根据这篇博文去排查了报错原因,排除了可能1和可能2,然后去研究可能3的具体含义,一开始并没有理解“值不匹配”的含义,只是直觉性地去检查了一下目标字段在两个表中的值,发现A表中有一行数据该字段的值在B表中已经删除了,这就导致了所谓的“值不匹配”的问题,然后手动删除了A表中的该条废弃数据,再次设置外键就成功了。

 

 

  最后贴一下参考的原文,原文链接:https://blog.csdn.net/weixin_43713105/article/details/89396870

报错的原因大概分为三种:

  原因一:

    添加的外键列与另一个表的唯一索引列(一般是主键)的数据类型不同
  原因二:
    要添加外键的表类型与另一个表的存储引擎是不是都为innodb引擎
    #查看表引擎
      法一: show create table 表名;
      法二:show table status from 数据库 where name=‘表名’;
      法三:use information_schema;
         select table_catalog,table_schema,table_name,engine from tables
         where table_schema=‘数据库名’ and table_name=‘表名’;
  原因三:
    设置的外键与另一个表中的唯一索引列(一般是主键)中的值不匹配
    #解决办法:删除要成为外键的列,再次创建并默认为NULL

以上是关于mySql插入数据,关于Cannot add or update a child row: a foreign key constraint fails的问题,的主要内容,如果未能解决你的问题,请参考以下文章

Cannot add or update a child row a foreign key constraint f

Cannot add or update a child row 数据库错误

关于mysql中[Err] 1451 -Cannot delete or update a parent row: a foreign key constraint fails

关于mysql中[Err] 1451 -Cannot delete or update a parent row: a foreign key constraint fails

ERROR 1452 : Cannot add or update a child row: a foreign key constraint fails

数据库添加数据报错:Cannot add or update a child row: a foreign key constraint fails