0


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

#1452 - Cannot add or update a child row: a foreign key constraint fails (goaread.views, CONSTRAINT views_ibfk_1 FOREIGN KEY (source_id) REFERENCES blogs (id) ON DELETE CASCADE ON UPDATE CASCADE)

一、解决具体原因(推荐)

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

1)原因一:添加的外键列与另一个表的唯一索引列(一般是主键)的数据类型不同

2)原因二:要添加外键的表类型与另一个表的存储引擎是不是都为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=‘表名’;

3)原因三:设置的外键与另一个表中的唯一索引列(一般是主键)中的值不匹配

#解决办法:删除要成为外键的列,再次创建并默认为NULL

二、取消外键约束

一般不推荐直接取消外键约束,只有特殊情况下需要。

问题在于 FOREIGN KEY 约束。默认情况下 (SET FOREIGN_KEY_CHECKS = 1),FOREIGN_KEY_CHECKS 选项指定是否检查 InnoDB 表的外键约束。MySQL - 设置 FOREIGN_KEY_CHECKS

我们可以在运行 Query 之前将外键检查设置为禁用。禁用外键。

在运行查询之前执行其中一行,然后您就可以成功运行查询。

1)对于Session(推荐)

SET FOREIGN_KEY_CHECKS=0;

2)全局状态

SET GLOBAL FOREIGN_KEY_CHECKS=0;
标签: mysql 数据库

本文转载自: https://blog.csdn.net/godread_cn/article/details/127940407
版权归原作者 Goaread 所有, 如有侵权,请联系我们删除。

“错误 1452:无法添加或更新子行:外键约束失败”的评论:

还没有评论