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 隔离数据列和前缀索引的使用总结

    正确地创建和使用索引对于查询性能十分重要。由于存在很多种特殊场景的优化和行为,因此有很多种方式去有效选择和使用索引。因此,决定如何使用索引这一项技能是需要经验和时间的积累去培养的。以下会介绍一些如何有效使用索引的方法。
    2021-05-05
  • SQLyog连接不上mysql问题的解决方法(按照步骤,包解决)

    SQLyog连接不上mysql问题的解决方法(按照步骤,包解决)

    这篇文章主要介绍了SQLyog连接不上mysql问题的解决方法,文中给大家分析了SQLyog连接不上mysql的几种原因,并通过图文结合的方式给大家讲解的非常详细,需要的朋友可以参考下
    2024-03-03
  • MySql插入数据成功但是报[Err] 1055错误的解决方案

    MySql插入数据成功但是报[Err] 1055错误的解决方案

    这篇文章主要介绍了MySql插入数据成功但是报[Err] 1055错误的解决方案,需要的朋友可以参考下
    2017-08-08
  • MySQL如何为字段添加默认时间浅析

    MySQL如何为字段添加默认时间浅析

    这篇文章主要给大家介绍了关于MySQL如何为字段添加默认时间的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • mysql使用Haversine 公式和ST_Distance_Sphere 函数实现附近的人功能

    mysql使用Haversine 公式和ST_Distance_Sphere 函数实现附近的人功能

    使用 MySQL 来实现“附近的人”功能,可以通过Haversine 公式和ST_Distance_Sphere 函数两种方式来实现,这篇文章主要介绍了mysql实现附近的人功能,需要的朋友可以参考下
    2023-08-08
  • Mysql中的concat函数(拼接函数)详解

    Mysql中的concat函数(拼接函数)详解

    很多时候,我们需要将不同地方获得的字符串拼接在一起,此时就需要使用CONCAT和CONCAT_WS函数,这篇文章主要介绍了Mysql中的concat函数(拼接函数),需要的朋友可以参考下
    2023-02-02
  • Ubuntu20下MySQL 8.0.28 安装卸载方法图文教程

    Ubuntu20下MySQL 8.0.28 安装卸载方法图文教程

    这篇文章主要为大家详细介绍了Ubuntu20下MySQL 8.0.28 安装卸载方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • MySQL的日志基础知识及基本操作学习教程

    MySQL的日志基础知识及基本操作学习教程

    这篇文章主要介绍了MySQL的日志基础知识学习教程,包括MySQL中日志相关常用的服务器变量说明,极力推荐!需要的朋友可以参考下
    2015-11-11
  • MySQL之浅谈DDL和DML

    MySQL之浅谈DDL和DML

    大家好,本篇文章主要讲的是MySQL之浅谈DDL和DML,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Mysql InnoDB B+树索引目录项记录页管理

    Mysql InnoDB B+树索引目录项记录页管理

    这篇文章主要为大家介绍了Mysql InnoDB B+树索引目录项记录页管理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05

最新评论