[英]Can't Drop foreign key in MySQL
我在課程和講師之間建立了一對多的關系,我想放棄這種關系。 當我試圖在課程表中刪除instructorID時,它告訴我。 我無法刪除它,因為它是一個外鍵。 然后我決定像這樣放棄它:
ALTER TABLE course DROP FOREIGN KEY instructorID
但我收到此錯誤:
#1091 - Can't DROP 'InstructorID'; check that column/key exists
我不明白這個錯誤是什么意思。 我究竟做錯了什么?
請運行SHOW CREATE TABLE course;
確保instructorID 是外鍵約束的名稱。
補充:錯誤表示MySQL搜索了一個名為“InstructorID”的外鍵約束,但是沒有這個名字的約束,也許這是你的列名,但是你必須使用約束名來刪除外鍵。
運行SHOW CREATE table course;
你應該找到 fk 符號,它通常類似於下面的那個:
(course_ibfk_1)
它可能會根據您使用的 mysql 版本而有所不同,然后使用 fk 符號刪除外鍵,如下所示:
alter table course drop foreign key course_ibfk_1;
您需要刪除“外鍵約束”和“鍵”。
Alter Table <table name> drop foreign key <constraint_name>
Alter table <table name> drop key <column name>
如果你們中的任何人仍然無法DROP
表。 嘗試這個。 您可以通過運行此查看所有詳細信息
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME = 'ReferenceTableName'; <-- change only this
如果您只想查看約束
SELECT
CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME = 'ReferenceTableName';
要刪除 FOREIGN KEY 約束:
MySQL:
ALTER TABLE Orders DROP FOREIGN KEY {Constraint/Key_name};
對於 SQL Server / Oracle / MS Access:
ALTER TABLE Orders DROP CONSTRAINT {Constraint/Key_name};
不能刪除 InstructorID 的原因是因為需要使用外鍵的約束名稱。 KevDev 指定您必須運行“SHOW CREATE TABLE course”才能找到約束名稱。 這樣做后,您可以刪除外鍵。 但是請稍等,“密鑰”仍然保留在后面,必須將其刪除。 您可以運行“SHOW CREATE TABLE”課程來檢查密鑰是否還在后面。 一旦檢查它仍然存在,然后執行鮑比建議的操作。 'Alter table drop key' 這樣做你已經完全刪除了外鍵
不能刪除“字符串”; 檢查列/鍵是否存在:ALTER TABLE accreditor_architectures
DROP string
error show in terminal when from database in ruby on rails
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.