MySQL 下拉字段;外键错误号 150

Posted

技术标签:

【中文标题】MySQL 下拉字段;外键错误号 150【英文标题】:MySQL drop field; foreign key errorno 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 失败!

【问题讨论】:

【参考方案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

【讨论】:

你太棒了,我相信我把索引和约束混淆了。这就像摆脱这三个人的魅力一样。谢谢!

以上是关于MySQL 下拉字段;外键错误号 150的主要内容,如果未能解决你的问题,请参考以下文章

使用 mysql 工作台创建 CHAR 类型的外键时出错:错误 1005:无法创建表(错误号:150)

创建带有外键错误号的 sql 表:150

Laravel 迁移错误号:150“外键约束格式不正确”

MySQL创建表:错误1005 errno:150“外键约束形成错误”

MySQL 中的外键添加失败,错误代码为 1005,编号为 150

#1025 - mysql 中重命名错误(错误号:150)