无法在MySQL中删除外键

时间:2014-08-01 11:51:33

标签: mysql

我在课程和教练之间有一对多的关系,我想放弃。当我试图删除课程表中的instructorID时,它告诉我。因为它是外键,我无法放弃它。然后我决定放弃它:

ALTER TABLE course DROP FOREIGN KEY instructorID

但是我收到了这个错误:

#1091 - Can't DROP 'InstructorID'; check that column/key exists 

我不知道这个错误意味着什么。我究竟做错了什么?

7 个答案:

答案 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数据库中删除列时在终端显示错误