MySQL 删除字段;外键错误号 150

标签 mysql foreign-keys

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。到 axisSchedule 失败!

最佳答案

你需要使用

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/

相关文章:

java - 如何检查 Java EE 应用程序中的数据库连接泄漏?

mysql - 如果该记录没有唯一 ID,如何从列中获取最后一条记录?

php - 如何更新字段以将值添加到现有值?

entity-framework - EF Code First - 指向另一个表的多个属性

mysql - 尝试添加外键关系时mysql中的外键约束

java - ALTER TABLE FOREIGN KEY 从 java 到 mysql

python - 如何在python中将数组字符串转换为数组

java - JpaRepository findAll() 将不会返回具有空字段的行

python - Django:将两个外键合并到一个字段中

mysql - 嵌套模型上的 Django JOIN 带有查找字段的外键