【发布时间】:2015-05-25 14:07:56
【问题描述】:
我有一个带有外键字段的模型。我想删除外键引用。但是,由于以下错误,迁移失败:
Cannot delete or update a parent row: a foreign key constraint fails
我了解发生了什么,但我不知道如何使用 Django 正确解决此问题。现在(因为我处于项目的开始阶段),我手动进入 MySQL 数据库并删除表并重新迁移,就好像它是第一次迁移一样。
有没有办法使用 Django 来解决这个外键约束问题?
我正在使用 Django 1.7
数据库后端是 MySQL
编辑 - 迁移之前/之后的模型
之前:
class Skills(models.Model):
# fields here...
class Project(models.Model):
skills = models.ForeignKey(Skills, verbose_name = "Required Skills", blank = True, null = True)
之后:
class Skill(models.Model):
# fields here...
class Project(models.Model):
skills = models.ForeignKey(Skill, verbose_name = "Required Skills", blank = True, null = True)
我很确定我所做的只是从 Skill 模型中删除了“复数”。 makemigrations 命令工作正常,但 migrate 命令失败并出现上述错误。
编辑 2
遇到同样的错误:
Cannot drop column 'skills_id': needed in a foreign key constraint 'projects_project_skills_id_4cc7e00883ac4de2_fk_projects_skill_id'
这次我从模型Project 中删除了字段skill
【问题讨论】:
-
这是您在删除或更新行时可能会遇到的错误;不是在您更改数据库架构时。您可以发布您的模型(迁移前后)吗?