django—重新运行迁移,创建约束并中途失败
我有一个迁移,它将一组django—重新运行迁移,创建约束并中途失败,django,django-migrations,Django,Django Migrations,我有一个迁移,它将一组unique\u约束添加到一起。当我执行它时,它会中途失败,因为有些表不遵守此约束。因此,我必须进入并修复数据,然后再次运行迁移 问题是,当我再次尝试运行它时,它会抱怨约束已经存在 django.db.utils.IntegrityError: (1062, "Duplicate entry '406-14933' for key 'app_model_language_id_category_id_29dac763_uniq'") 这种情况发生在上一次运行中没有问题的
unique\u
约束添加到一起。当我执行它时,它会中途失败,因为有些表不遵守此约束。因此,我必须进入并修复数据,然后再次运行迁移
问题是,当我再次尝试运行它时,它会抱怨约束已经存在
django.db.utils.IntegrityError: (1062, "Duplicate entry '406-14933' for key 'app_model_language_id_category_id_29dac763_uniq'")
这种情况发生在上一次运行中没有问题的表中,因此创建了约束。然后我必须进入并手动删除约束,然后我可以再次运行它
有没有办法让它忽略此错误并继续?我不确定您是否可以绕过此检查,因此,解决此问题的方法是,不要创建一个会产生许多约束的迁移,并且可能会中途失败,而是创建多个只包含一个约束的迁移。然后,如果一个表是正确的,则会创建约束,您可以转到下一个表,再也不会回到这个表。您使用的是MySQL,对吗?@IainShelvington Yes您可能会假装迁移:您不能忽略错误,否则唯一约束将不会是唯一的。您需要使用RunPython命令创建一个迁移,该命令删除有问题的行,并在添加约束之前运行该迁移。我无法进行迁移,因为数据合并是一个非常手动的过程。因为显然这个约束有一个唯一的标识符(在本例中是29dac763),所以我认为它可以被删除并创建,也可以不再创建。