Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL 1217 - Cannot delete or update a parent row: a foreign key constraint fails

解决MySQL遇到错误:1217 - Cannot delete or update a parent row: a foreign key constraint fails

作者:远离bug,珍爱头发

这篇文章主要介绍了解决MySQL遇到错误:1217 - Cannot delete or update a parent row: a foreign key constraint fails问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

遇到问题

今天在准备"删库跑路"的时候

有的数据表再删除的时候报了以下错误:

1217 - Cannot delete or update a parent row: a foreign key constraint fails

本着有事找度娘的原则,将这句话百度翻译一下,中文意思是“无法删除或更新父行:外键约束失败”。

那这不就好办了,把有外键约束的表删了或者解除约束不就好了。

原因

查看了一下教程发现

数据表之间经常存在外键关联的情况,这时如果直接删除父表,会破坏数据表的完整性,也会删除失败。

删除父表有以下两种方法

解决方法

我们尝试一下第二种方法,这样还可以保留一下子表的数据,至少可以早出来两年 (手动狗头)

1.要删除的父表

CREATE TABLE tb_drop
(
id INT(11) PRIMARY KEY,
name VARCHAR(22),
location VARCHAR (50)
);

2.外键关联需要被删除的子表

CREATE TABLE tb_foreign
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
CONSTRAINT fk_drop_foreign FOREIGN KEY (deptId) REFERENCES tb_drop(id)
);

3.此时如果删除tb_drop表

就会报出1217错误,所以要解除外键约束

ALTER TABLE tb_foreign DROP FOREIGN KEY fk_drop_foreign;

执行成功后,两个表之间的外键约束就解除了,此时删除表就可以了

dDROP TABLE tb_drop;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文