我曾经在课程和讲师之间建立了一对多的关系,但现在想要删除这个关系。当我试图在课程表中删除讲师ID时,系统提示我无法删除,因为它是一个外键。于是我决定采用以下方法进行删除:
ALTER TABLE course DROP FOREIGN KEY instructorID
但是我遇到了这个错误:
#1091 - Can't DROP 'InstructorID'; check that column/key exists
我不明白这个错误的意思。我做错了什么吗?
我曾经在课程和讲师之间建立了一对多的关系,但现在想要删除这个关系。当我试图在课程表中删除讲师ID时,系统提示我无法删除,因为它是一个外键。于是我决定采用以下方法进行删除:
ALTER TABLE course DROP FOREIGN KEY instructorID
#1091 - Can't DROP 'InstructorID'; check that column/key exists
SHOW CREATE TABLE course;
,以确保instructorID是外键约束的名称。运行SHOW CREATE table course;
之后,您应该找到类似于以下的常见外键符号:
(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 FOREIGN KEY
后索引仍然存在。我需要发出 drop key
。 - KingsleySELECT
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';
category
,删除索引 primaryID
。 - ThanasisMySQL:
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'来查找约束名。在这样做之后,你可以删除外键。但是等等,'key'仍然留在那里,必须被删除。你可以运行'SHOW CREATE TABLE' course来检查该键是否仍然存在。一旦确认它仍然存在,就执行Bobby建议的操作。'Alter table drop key',这样你就完全删除了外键。
无法删除 'string';请检查列/键是否存在:在 ruby on rails 中从数据库中删除列时,在终端中显示 ALTER TABLE accreditor_architectures
DROP string
错误。