日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

解决MySQL删除外键时报错Error Code: 1091. Can‘t DROP ‘XXX‘; check that column/key exists

發(fā)布時間:2024/4/13 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决MySQL删除外键时报错Error Code: 1091. Can‘t DROP ‘XXX‘; check that column/key exists 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

解決MySQL刪除外鍵時報錯Error Code: 1091. Can't DROP 'XXX'; check that column/key exists

??長期不寫基礎(chǔ)的 MySQL 代碼,筆者也開始犯一些低級錯誤。最近,筆者在嘗試將表中某列的外鍵約束刪除時,MySQL 卻一直報該列本就不存在的錯誤。

筆者報錯時的運行環(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é)

以上是生活随笔為你收集整理的解决MySQL删除外键时报错Error Code: 1091. Can‘t DROP ‘XXX‘; check that column/key exists的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。