我在课程和教练之间有一对多的关系,我想放弃。当我试图删除课程表中的instructorID时,它告诉我。因为它是外键,我无法放弃它。然后我决定放弃它:
ALTER TABLE course DROP FOREIGN KEY instructorID
但是我收到了这个错误:
#1091 - Can't DROP 'InstructorID'; check that column/key exists
我不知道这个错误意味着什么。我究竟做错了什么?
答案 0 :(得分:40)
请运行SHOW CREATE TABLE course;
以确保instructorID是外键约束的名称。
其他: 该错误意味着MySQL搜索名为" InstructorID"的外键约束。但是这个名称没有约束,也许这是你的列名,但你必须使用约束名来删除外键。
答案 1 :(得分:22)
运行SHOW CREATE table course;
后
你应该找到fk符号,它通常就像下面的那个:
(course_ibfk_1)
根据您使用的mysql版本可能会有所不同,然后使用fk符号删除外键,如下所示:
alter table course drop foreign key course_ibfk_1;
答案 2 :(得分:3)
您需要删除'外键约束'和'键'。
Alter Table <table name> drop foreign key <constraint_name>
Alter table <table name> drop key <column name>
答案 3 :(得分:3)
如果你们中的任何人仍然无法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';
答案 4 :(得分:1)
删除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};
答案 5 :(得分:0)
你不能删除InstructorID的原因是你需要使用外键约束的名称。 KevDev指定您必须运行'SHOW CREATE TABLE course'才能找到约束名称。执行此操作后,您可以删除外键。但是等一下,“钥匙”仍然落后,必须删除。您可以运行'SHOW CREATE TABLE'课程来检查密钥是否仍然落后。一旦检查它仍然在那里然后执行Bobby建议。 '更改表删除键'这样做就完全删除了外键
答案 6 :(得分:0)
不能删除'string';检查列/键是否存在:ALTER TABLE accreditor_architectures
DROP string
在从Rails中的ruby数据库中删除列时在终端显示错误