MySQL 使用 InnoDB 并删除未使用的外键时出现问题。外键引用了另一个表的 ID。但是,我不需要这个字段。
我已经尝试删除 fk 索引,但它不起作用 - 说它在外键约束中是必需的。并删除该字段,这会给我一个错误:
1025 - 将“./axis/#sql-ad8_1531”重命名为“./axis/Schedule”时出错(errno:150)
该表目前是空的。没有引用此字段的表。关于如何摆脱这个的任何想法?除了创建一个新表?
如果我正确阅读了下面的错误,我就不能删除该列,因为已声明 fk 索引。而且我不能删除索引,因为该列存在。鸡和蛋??
最新的外键错误
111004 17:05:40 表轴/时间表外键约束错误:
表中没有包含的索引
列作为第一列,或数据类型
表与引用表中的不匹配
或 ON ... SET NULL 列之一被声明为 NOT NULL。约束:
,
约束“fk_Schedule_Grp”外键(“idGrp”)引用“Grp”(“idGrp”)在删除时没有操作在更新时没有操作
InnoDB:重命名表 axis
。到 axis
。Schedule
失败!
最佳答案
你需要使用
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
关于MySQL 删除字段;外键错误号 150,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655310/