Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django—重新运行迁移,创建约束并中途失败_Django_Django Migrations - Fatal编程技术网

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),所以我认为它可以被删除并创建,也可以不再创建。