MySQL drop field;外键错误150

时间:2011-10-04 23:54:02

标签: mysql foreign-keys

使用InnoDB并删除未使用的外键的MySQL问题。外键引用另一个表的id。但是,我不需要这个领域。

我已经尝试删除fk索引,这不起作用 - 说它是在外键约束中需要的。并删除该字段,这给了我一个错误:

1025 - 将'./axis/#sql-ad8_1531'重命名为'./axis/Schedule'时出错(错误号码:150)

该表目前为空。没有引用此字段的表。关于如何摆脱这个的任何想法?除了创建一个新表?

如果我正确读取下面的错误,我就不能删除列,因为声明了fk索引。我不能删除索引,因为列存在。鸡肉和鸡肉蛋??

最新外国关键错误 111004 17:05:40表轴/ Schedule的外键约束出错: 表中没有包含索引的索引 列作为第一列,或者是数据类型 table与引用表中的表不匹配 或其中一个ON ... SET NULL列被声明为NOT NULL。约束: ,   约束“fk_Schedule_Grp”FOREIGN KEY(“idGrp”)REFERENCES“Grp”(“idGrp”)ON更新没有动作更新没有动作 InnoDB:重命名表axis。到axisSchedule失败了!

1 个答案:

答案 0 :(得分:16)

您需要使用

ALTER TABLE table_name DROP FOREIGN KEY constraint_name

这里constraint_name是约束的名称而不是索引。如果您不知道这是什么,您可以通过发出SHOW CREATE TABLE来找到答案。它是在单词CONSTRAINT之后显示的标识符。

编辑:从您添加到问题,看起来您需要发出

ALTER TABLE table_name DROP FOREIGN KEY fk_Schedule_Grp