MySQL删除外键时报错Error Code:1091. Can‘t DROP ‘XXX‘的解决方法

 更新时间:2022年08月31日 11:01:34   作者:暗诺星刻  
这篇文章主要给大家介绍了关于MySQL删除外键时报错Error Code:1091. Can‘t DROP ‘XXX‘的解决方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

解决MySQL删除外键时报错Error Code: 1091. Can't DROP 'XXX'; check that column/key exists

长期不写基础的 MySQL 代码,笔者也开始犯一些低级错误。最近,笔者在尝试将表中某列的外键约束删除时,MySQL 却一直报该列本就不存在的错误。

笔者报错时的运行环境:

MySQL 8.0.27

Windows 10 教育版

Error Code: 1091. Can't DROP 'XXX'; check that column/key exists

笔者非常疑惑,因为多次检查后发现列名似乎并没有错误。和往常一样,笔者为此建立了一个 demo 表,这才发现了原因所在。

建表代码如下:

CREATE TABLE demo1 (
    id CHAR(32),

    PRIMARY KEY (id)
);

CREATE TABLE demo2 (
    id CHAR(32),
    demo1_id CHAR(32),

    PRIMARY KEY (id),
    FOREIGN KEY (demo1_id) REFERENCES demo1 (id)
);

当建立了上述的表之后,笔者尝试删除表 demo2 的外键,代码如下:

ALTER TABLE demo2 DROP FOREIGN KEY demo1_id;

结果发生同样的错误。

Error Code: 1091. Can't DROP 'demo1_id'; check that column/key exists

这个问题出在建表代码和删除外键的代码上。由于在当初建表的时候,没有为这个外键约束起一个名称,所以 MySQL 为此自动生成了一个名称,这个自动生成的名称不同于受到这个外键约束的列名。而删除外键的时候,需要提供的是这个外键约束名,而不是列名。

可以印证这一点。在 Navicat Premium 中可以看到关于这个表的建表信息。(也可以使用代码 show create TABLE demo2; 来查看。)

可以看到,MySQL 自动为列 demo1_id 的外键约束生成了一个名称 demo2_ibfk_1。因此,删除外键时应使用这个名称。即删除外键的代码应如下:

ALTER TABLE demo2 DROP FOREIGN KEY demo2_ibfk_1;

使用了这个代码之后,表 demo2 的外键就成功被删除了。

总结 

到此这篇关于MySQL删除外键时报错Error Code:1091. Can‘t DROP ‘XXX‘解决的文章就介绍到这了,更多相关MySQL删除外键报错Error Code:1091内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql修改字段类型、长度及添加删除列实例代码

    Mysql修改字段类型、长度及添加删除列实例代码

    在MySQL中可以使用ALTER TABLE语句来修改表结构,包括添加自增属性,下面这篇文章主要给大家介绍了关于Mysql修改字段类型、长度及添加删除列的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • mysql中Update未加索引导致的微服务模块不可用

    mysql中Update未加索引导致的微服务模块不可用

    本文主要介绍了mysql中Update未加索引导致的微服务模块不可用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 史上最简单的MySQL数据备份与还原教程(下)(三十七)

    史上最简单的MySQL数据备份与还原教程(下)(三十七)

    这篇文章主要为大家详细介绍了史上最简单的MySQL数据备份与还原教程下篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 修改MySQL的默认密码的四种小方法

    修改MySQL的默认密码的四种小方法

    对于windows平台来说安装完MySQL后,系统就已经默认生成了许可表和账户,下文中就教给大家如何修改MySQ的默认密码。
    2015-09-09
  • MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci

    MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_

    这篇文章主要介绍了MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • MySQL使用命令行备份数据的方法详解

    MySQL使用命令行备份数据的方法详解

    由于长期使用测试环境的数据库,时不时会有脏数据删除不干净,对此很需要一个实时将生产库的数据定期备份一份,防止生产库中会有脏数据进来,所以本文给大家介绍了MySQL使用命令行备份数据的方法,需要的朋友可以参考下
    2024-02-02
  • mysql记录根据日期字段倒序输出

    mysql记录根据日期字段倒序输出

    这篇文章主要介绍了mysql记录根据日期字段倒序输出 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • 分析一条sql的性能的标准总结

    分析一条sql的性能的标准总结

    在本篇文章里小编给各位分享了关于分析一条sql的性能的相关知识点总结内容,有兴趣的朋友们学习下。
    2019-07-07
  • MySQL数据库常用操作技巧总结

    MySQL数据库常用操作技巧总结

    这篇文章主要介绍了MySQL数据库常用操作技巧,结合实例形式总结分析了mysql查询、存储过程、字符串截取、时间、排序等常用操作技巧,需要的朋友可以参考下
    2018-03-03
  • Mysql和SQLServer驱动连接的实现步骤

    Mysql和SQLServer驱动连接的实现步骤

    本文主要介绍了Mysql和SQL Server的驱动连接,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06

最新评论