【问题标题】:MySQL drop field; foreign key errorno 150MySQL 下拉字段;外键错误号 150
【发布时间】:2011-12-01 02:28:09
【问题描述】:

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

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

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

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

如果我正确阅读了以下错误,我无法删除该列,因为声明了 fk 索引。而且我不能删除索引,因为该列存在。鸡肉和鸡蛋??

最新的外键错误 111004 17:05:40 表轴/计划的外键约束错误: 表中没有将包含的索引 列作为第一列,或 表与引用表中的不匹配 或 ON ... SET NULL 列之一被声明为 NOT NULL。约束: , CONSTRAINT "fk_Schedule_Grp" FOREIGN KEY ("idGrp") REFERENCES "Grp" ("idGrp") ON DELETE NO ACTION ON UPDATE NO ACTION InnoDB:重命名表axis。到axis.Schedule 失败!

【问题讨论】:

    标签: mysql foreign-keys


    【解决方案1】:

    你需要使用

    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
    

    【讨论】:

    • 你太棒了,我相信我把索引和约束混淆了。这就像摆脱这三个人的魅力一样。谢谢!
    猜你喜欢
    • 2010-10-23
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    相关资源
    最近更新 更多