MySQL刪除外鍵時報錯Error?Code:1091.?Can‘t?DROP?‘XXX‘的解決方法
解決MySQL刪除外鍵時報錯Error Code: 1091. Can't DROP 'XXX'; check that column/key exists
長期不寫基礎(chǔ)的 MySQL 代碼,筆者也開始犯一些低級錯誤。最近,筆者在嘗試將表中某列的外鍵約束刪除時,MySQL 卻一直報該列本就不存在的錯誤。
筆者報錯時的運(yùn)行環(huán)境:
MySQL 8.0.27
Windows 10 教育版
Error Code: 1091. Can't DROP 'XXX'; check that column/key exists
筆者非常疑惑,因為多次檢查后發(fā)現(xiàn)列名似乎并沒有錯誤。和往常一樣,筆者為此建立了一個 demo 表,這才發(fā)現(xiàn)了原因所在。
建表代碼如下:
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)
);
當(dāng)建立了上述的表之后,筆者嘗試刪除表 demo2 的外鍵,代碼如下:
ALTER TABLE demo2 DROP FOREIGN KEY demo1_id;
結(jié)果發(fā)生同樣的錯誤。
Error Code: 1091. Can't DROP 'demo1_id'; check that column/key exists
這個問題出在建表代碼和刪除外鍵的代碼上。由于在當(dāng)初建表的時候,沒有為這個外鍵約束起一個名稱,所以 MySQL 為此自動生成了一個名稱,這個自動生成的名稱不同于受到這個外鍵約束的列名。而刪除外鍵的時候,需要提供的是這個外鍵約束名,而不是列名。
可以印證這一點。在 Navicat Premium 中可以看到關(guān)于這個表的建表信息。(也可以使用代碼 show create TABLE demo2; 來查看。)

可以看到,MySQL 自動為列 demo1_id 的外鍵約束生成了一個名稱 demo2_ibfk_1。因此,刪除外鍵時應(yīng)使用這個名稱。即刪除外鍵的代碼應(yīng)如下:
ALTER TABLE demo2 DROP FOREIGN KEY demo2_ibfk_1;
使用了這個代碼之后,表 demo2 的外鍵就成功被刪除了。

總結(jié)
到此這篇關(guān)于MySQL刪除外鍵時報錯Error Code:1091. Can‘t DROP ‘XXX‘解決的文章就介紹到這了,更多相關(guān)MySQL刪除外鍵報錯Error Code:1091內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
win2008 R2 WEB環(huán)境配置之MYSQL 5.6.22安裝版安裝配置方法
這篇文章主要介紹了win2008 R2 WEB環(huán)境配置之MYSQL 5.6.22安裝版安裝配置方法,需要的朋友可以參考下2016-06-06
MySQL創(chuàng)建內(nèi)部臨時表的所有場景盤點
這篇文章主要為大家介紹了MySQL創(chuàng)建內(nèi)部臨時表的所有場景盤點,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
AlmaLinux 9 安裝 MySQL 8.0.32的詳細(xì)過程
這篇文章主要介紹了AlmaLinux 9 安裝 MySQL 8.0.32的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
mysql多表join時候update更新數(shù)據(jù)的方法
如果item表的name字段為''就用resource_library 表的resource_name字段前面加上字符串Review更新它,他們的關(guān)聯(lián)關(guān)系在表resource_review_link中。2011-03-03

