我有一个表,它的主键在其他几个表中使用,并且有几个外键到其他表。
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):重命名时出错"
我怎样才能在上面的分配表中删除列而不得到这个错误?
如果你的表使用InnoDB引擎,你通常会得到这个错误。在这种情况下,您必须删除外键,然后执行alter table并删除列。
但棘手的部分是不能使用列名删除外键,而是必须找到用于索引它的名称。要找到它,发出下面的select命令:
创建表区域
这应该会显示一个行,在左上角点击+选项,点击全文raio按钮,然后点击go。你会得到索引的名称,如下所示:
约束region_ibfk_1外键(country_id)引用国家(id) ON DELETE NO ACTION ON UPDATE NO ACTION
现在简单地发出一个:
删除表外键region_ibfk_1
or
更简单地输入:-
删除表TableName外键
记住唯一的事情就是在你的表名之后添加_ibfk_1,就像这样:- TableName_ibfk_1
如果你的表使用InnoDB引擎,你通常会得到这个错误。在这种情况下,您必须删除外键,然后执行alter table并删除列。
但棘手的部分是不能使用列名删除外键,而是必须找到用于索引它的名称。要找到它,发出下面的select命令:
创建表区域
这应该会显示一个行,在左上角点击+选项,点击全文raio按钮,然后点击go。你会得到索引的名称,如下所示:
约束region_ibfk_1外键(country_id)引用国家(id) ON DELETE NO ACTION ON UPDATE NO ACTION
现在简单地发出一个:
删除表外键region_ibfk_1
or
更简单地输入:-
删除表TableName外键
记住唯一的事情就是在你的表名之后添加_ibfk_1,就像这样:- TableName_ibfk_1