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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SQLyog连接不上mysql问题的解决方法(按照步骤,包解决)
这篇文章主要介绍了SQLyog连接不上mysql问题的解决方法,文中给大家分析了SQLyog连接不上mysql的几种原因,并通过图文结合的方式给大家讲解的非常详细,需要的朋友可以参考下2024-03-03MySql插入数据成功但是报[Err] 1055错误的解决方案
这篇文章主要介绍了MySql插入数据成功但是报[Err] 1055错误的解决方案,需要的朋友可以参考下2017-08-08mysql使用Haversine 公式和ST_Distance_Sphere 函数实现附近的人功能
使用 MySQL 来实现“附近的人”功能,可以通过Haversine 公式和ST_Distance_Sphere 函数两种方式来实现,这篇文章主要介绍了mysql实现附近的人功能,需要的朋友可以参考下2023-08-08Ubuntu20下MySQL 8.0.28 安装卸载方法图文教程
这篇文章主要为大家详细介绍了Ubuntu20下MySQL 8.0.28 安装卸载方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-04-04
最新评论