我收到以下错误:
IntegrityError: duplicate key value violates unique constraint "users_userprofile_pkey"
我正在从MySQL迁移到Postgres,所以我使用以下方法从MySQL数据库转储数据:
python2.7 manage.py dumpdata --indent=4 --natural > dump.json
当我尝试将dump.json加载到Postgresql数据库时,我收到错误:
python manage.py loaddata dump.json
我的用户/型号中有以下信号:
post_save.connect(create_user_profile, sender=User, dispatch_uid="user_create_profile")
post_save.connect(create_api_key, sender=User, dispatch_uid="user_create_api_key")
答案 0 :(得分:4)
我必须注释掉post_save信号,然后执行loaddata。
答案 1 :(得分:0)
问题可能是因为--natural
关键字,如果您阅读有关dumpdata自然键here的文档,您会发现它存在一些适用于您的数据库迁移的问题。
同样here他们谈论这个问题的解决方案,这似乎非常有趣(而且乏味)。
您始终可以尝试首先添加彼此不依赖的模型,以便在尝试创建另一个模型之前确定它们是否存在。即:
如果你有这个型号:
class Person(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
birthdate = models.DateField()
class Meta:
unique_together = (('first_name', 'last_name'),)
class Book(models.Model):
name = models.CharField(max_length=100)
author = models.ForeignKey(Person)
然后首先迁移Person类,然后再迁移book类。
此外,如果您可以发布错误,那将非常有帮助(因为我可能更具体)但我很确定问题是主要问题