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主从延迟问题解决的方法,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2021-01-01
  • win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法

    win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法

    这篇文章主要介绍了win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法,需要的朋友可以参考下
    2016-06-06
  • mysql中general_log日志知识点介绍

    mysql中general_log日志知识点介绍

    这篇文章主要介绍了mysql中general_log日志知识点的介绍以及其他相关内容,以后兴趣的朋友们学习下。
    2019-08-08
  • MySQL创建内部临时表的所有场景盘点

    MySQL创建内部临时表的所有场景盘点

    这篇文章主要为大家介绍了MySQL创建内部临时表的所有场景盘点,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • AlmaLinux 9 安装 MySQL 8.0.32的详细过程

    AlmaLinux 9 安装 MySQL 8.0.32的详细过程

    这篇文章主要介绍了AlmaLinux 9 安装 MySQL 8.0.32的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 最全mysql数据类型梳理汇总

    最全mysql数据类型梳理汇总

    这篇文章主要介绍了最全mysql数据类型梳理汇总,​​mysql​​支持多种数据类型,主要有数值类型、日期与时间类型以及字符串类型,更多相关内容需要的朋友可以参考一下
    2022-07-07
  • mysql多表join时候update更新数据的方法

    mysql多表join时候update更新数据的方法

    如果item表的name字段为''就用resource_library 表的resource_name字段前面加上字符串Review更新它,他们的关联关系在表resource_review_link中。
    2011-03-03
  • MySQL中易被我们忽略的细节

    MySQL中易被我们忽略的细节

    这篇文章主要为大家介绍了几处MySQL中易被我们误会的地方,分享给大家,一来为了有趣,二来为了不让自己踩坑。
    2016-07-07
  • MySQL多表连接的入门实例教程

    MySQL多表连接的入门实例教程

    这篇文章主要给大家介绍了关于MySQL多表连接的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • 图文详解Mysql中如何查看Sql语句的执行时间

    图文详解Mysql中如何查看Sql语句的执行时间

    写程序的人往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,所以下面这篇文章主要给大家介绍了关于Mysql中如何查看Sql语句的执行时间的相关资料,需要的朋友可以参考下
    2021-12-12

最新评论