【发布时间】:2020-01-08 06:06:57
【问题描述】:
我有一个添加了一堆unique_together 约束的迁移。当我执行它时,它中途失败,因为某些表不遵守此约束。所以我必须进去修复数据,然后再次运行迁移。
问题是当我尝试再次运行它时,它抱怨约束已经存在
django.db.utils.IntegrityError: (1062, "Duplicate entry '406-14933' for key 'app_model_language_id_category_id_29dac763_uniq'")
这发生在上次运行没有问题的表中,因此创建了约束。然后我必须进去手动删除约束,然后我可以再次运行它。
有没有办法让它忽略这个错误并继续?
【问题讨论】:
-
你在使用 MySQL 对吗?
-
@IainShelvington 是的
-
你不能忽略这个错误,否则唯一约束不会是唯一的。您需要使用 RunPython 命令创建一个迁移,该命令删除有问题的行并在添加约束的行之前运行该迁移
-
我无法进行迁移,因为数据合并是一个非常手动的过程。由于显然这个约束有一个唯一标识符(在这种情况下为 29dac763),我认为它可以被删除并创建或不再创建。