MySQL删除某些外键。

228

我有一张表,其主键用于多个其他表,并且有多个外键指向其他表。

CREATE TABLE location (
   locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
   ...
) ENGINE = InnoDB;

CREATE TABLE assignment (
   assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   locationID INT NOT NULL,
   FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID)
   ...
) ENGINE = InnoDB;

CREATE TABLE assignmentStuff (
   ...
   assignmentID INT NOT NULL,
   FOREIGN KEY assignmentIDX (assignmentID) REFERENCES assignment (assignmentID)
) ENGINE = InnoDB;

问题在于,当我试图删除其中一个外键列(即locationIDX)时,它会给出一个错误。

"ERROR 1025 (HY000): Error on rename"

如何在不出现此错误的情况下删除上面分配表中的列?

11个回答

0

您无法删除外键列,因为它被表assignmentStuff引用。所以您应该先删除外键约束assignmentStuff.assignmentIDX

类似的问题已经在这里提出过。还可以查看这里获取更多信息。


1
所以,由于assignmentStuff引用了assignment的主键,我不能删除assignment的locationID列?这似乎有点违反直觉。 - Drew
看起来我交换了一些列名,所以我的答案实际上没有意义。对此很抱歉... - Ronald Wildenberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接