解决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‘; check that column/key exists相关推荐

  1. 解决MySQL删除外键时报错

    错误描述: 1.用NaviCat删除外键时报错. 截图: 2.直接使用命令删除: alert table _testinfo drop foreign key detailid 错误信息: 1025 ...

  2. 【MySQL】解决MySQL删除外键(foreign key)时报错问题

    [MySQL]解决MySQL删除外键(foreign key)时报错问题 文章目录 [MySQL]解决MySQL删除外键(foreign key)时报错问题 一.现象 二.分析 三.问题解决 四.拓展 ...

  3. mysql 外键报错_MySQL添加外键、删除外键方式,MySQL删除外键报错快速解决方案...

    外键的作用主要在于对各类表单进行约束,避免出现冗余数据及超出数据.那么,MySQL如何添加与删除外键?添加删除外键时报错是什么原因? 本文将从创建MySQL表单时添加外键.给已存在表单添加外键.删除外 ...

  4. mysql删除主键时报错_MySQL删除主键提示ERROR 1075 (42000)简单直观解决方案

    近日对MySQL语法进行了系统学习,不由得感叹仅仅3堂课的工夫就将自己曾经各种搜索.各种摸索耗费大量时间学习到的那点东西尽数囊括其中且进一步完善了知识系统. 也因此,看到本文的你如果想要提升自己,一定 ...

  5. MySQL添加外键时报错:ERROR 1452

    一.这个外键不是另一个表的主键,即外键不存在 二.外键存在还是报错,可能是外键勾选了属性NOT NULL,但是这张表里本来已经有数据了,现在新增了一列,这一列肯定是空的,所以又不符合NOT NULL的 ...

  6. Mysql出现问题:ERROR 1091 (42000): Can‘t DROP ‘**‘; check that column/key exists解决方案

    回城传送–><数据库问题解决方案> ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹.Java领域优质创作者

  7. mysql grant reload,MySQL执行GRANT命令时报错ERROR 1045解决办法

    摘要 腾兴网为您分享:MySQL执行GRANT命令时报错ERROR 1045解决办法,杂志迷,云闪付,一直播,小象优品等软件知识,以及592美剧,乐天网络电视,吃鸡无后座,易语言宝盒,语音转文字软件, ...

  8. mysql删除外键_MySQL删除外键定义的方法

    MySQL外键在定以后,如果我们不再需要这个外键,可以进行删除操作,下面就为您介绍MySQL删除外键定义的方法,供您参考. 不知道大家有没有发现,在定义外键的时候articles.member_id外 ...

  9. 解决 安装或卸载软件时报错Error 1001 的问题

    解决 安装或卸载软件时报错Error 1001 的问题 参考文章: (1)解决 安装或卸载软件时报错Error 1001 的问题 (2)https://www.cnblogs.com/11754293 ...

最新文章

  1. python财务-财务方面的学生如何学习python?
  2. python 如何在linux进行调试
  3. ASP实现记住密码的功能
  4. php国外地址生成,thinkphp url生成
  5. kafka自带没web ui界面,怎么办?安装个第三方的
  6. error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
  7. sql server 碎片整理——DBCC SHOWCONTIG
  8. Syncthing vs BitTorrent Sync
  9. Android8.0 开机启动脚本,Android开机启动shell脚本(Android 8.0测试OK)
  10. 删除WIN10右键解压缩菜单
  11. 【炫丽跑车win7主题】
  12. HFSS----微带天线设计实例之模型建立
  13. python—文件处理
  14. python处理smap level2c 数据---根据 iqc_flag进行数据质量控制(二进制十进制)
  15. liunx 全盘查找_Linux中查找文件夹的命令
  16. MRR@K P@K R@K意义阐述与对比
  17. python高级应用_Python高级应用程序设计任务
  18. 8.0钓鱼宏命令插件 使用方法
  19. 第五章 区块链在非金融行业的应用
  20. 从零开始学习Hadoop--第5章 压缩

热门文章

  1. nginx教程全集汇总(ttlsa出品)
  2. Windows Mobile下C++取屏幕分辨率的方法
  3. 深度学习:向人工智能迈进
  4. Python之——遇到的小知识点总结
  5. raid操作相关命令笔记
  6. 【撸码师的备忘录】java对redis的基本操作
  7. hdu 1286 找新朋友 (容斥原理 || 欧拉函数)
  8. jvm调优:使用jconsole监控Jboss
  9. SpringBootApplication注解
  10. 为什么要使用spring IOC