1

我收到以下错误:

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")
4

2 回答 2

5

我不得不注释掉 post_save 信号,然后执行 loaddata。

于 2012-08-12T22:09:14.110 回答
0

问题可能是由于关键字,如果您在这里--natural阅读有关转储数据自然键的文档,您会发现它存在一些适用于数据库迁移的问题。

同样在这里,他们讨论了这个问题的解决方案,这似乎很有趣(而且乏味)。

您始终可以尝试先添加不相互依赖的模型,以便在尝试创建另一个模型之前确保它们存在。IE:

如果你有这个模型:

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 类。

另外,如果您可以发布错误,那将非常有帮助(因为我可以更具体),但我很确定问题是主键问题

于 2012-08-09T04:53:39.743 回答