MySQL设置外键报错 #1452 - Cannot add or update a child row: a foreign key constraint fails 解决方法
Posted 多格
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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设置外键报错 #1452 - Cannot add or update a child row: a foreign key constraint fails 解决方法的主要内容,如果未能解决你的问题,请参考以下文章
mysq添加外键报错:check the manual that corresponds to your MySQL server version for the right syntax to us
Magento DB错误:完整性约束违规:1452无法添加或更新子行:外键约束失败
MySQL 中的外键约束错误 1452 - Magento 导入