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

 更新时间:2024年06月05日 10:16:55   作者:远离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;

总结

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

相关文章

  • MySQL WorkBench管理操作MySQL教程

    MySQL WorkBench管理操作MySQL教程

    MySQL Workbench提供DBAs和developers一个集成工具环境,方便管理mysql数据库,这里简单介绍下MySQL Workbench使用方法,需要的朋友可以参考下
    2014-03-03
  • SQL数据库十四种案例介绍

    SQL数据库十四种案例介绍

    大家好,本篇文章主要讲的是SQL数据库十四种案例介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • MySQL8重置root账户密码图文教程超详细讲解

    MySQL8重置root账户密码图文教程超详细讲解

    root账户为MySQL的超级管理员用户,拥有MySQL提供的所有权限,这篇文章主要介绍了MySQL8重置root账户密码图文教程,需要的朋友可以参考下
    2023-05-05
  • MySQL 获得当前日期时间 函数

    MySQL 获得当前日期时间 函数

    这篇文章主要介绍了MySQL 获得当前日期时间 函数 非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-07-07
  • MySQL请求处理全流程之如何从SQL语句到数据返回

    MySQL请求处理全流程之如何从SQL语句到数据返回

    这篇文章主要介绍了MySQL请求处理全流程之如何从SQL语句到数据返回,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-03-03
  • ubuntu安装mysql数据库方法

    ubuntu安装mysql数据库方法

    ubuntu基于linux的免费开源桌面PC操作系统,十分契合英特尔的超极本定位,支持x86、64位和ppc架构。这篇文章给大家介绍ubuntu安装mysql数据库方法,非常不错,需要的朋友参考下吧
    2019-08-08
  • MySQL8新特性之降序索引底层实现详解

    MySQL8新特性之降序索引底层实现详解

    这篇文章主要介绍了MySQL8新特性之降序索引底层实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • CentOS6.5下RPM方式安装mysql5.6.33的详细教程

    CentOS6.5下RPM方式安装mysql5.6.33的详细教程

    本文给大家详细介绍CentOS6.5下RPM方式安装mysql5.6.33的教程,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友一起看看吧
    2016-10-10
  • 构建双vip的高可用MySQL集群

    构建双vip的高可用MySQL集群

    大家好,本篇文章主要讲的是构建双vip的高可用MySQL集群,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • mysql5.6及以下版本如何查询数据库里的json

    mysql5.6及以下版本如何查询数据库里的json

    MySQL里面保存数据有时候会把一些杂乱且不常用的时候丢进一个json字段里面,那么如何查询数据库里的json呢以及mysql存储json注意那些格式呢?接下来通过本文给大家详细介绍,需要的朋友参考下
    2017-03-03

最新评论