Ошибка «Duplicate key value» при запуске тестов Django при аутентификации - PullRequest
5 голосов
/ 12 января 2012

У меня есть сайт Django, который работает нормально. В базе данных содержится небольшое количество данных, которые я хочу использовать для тестирования. Я сделал dumpdata для генерации нескольких .json. Но когда я пытаюсь запустить тест в своем приложении («tagger»), я получаю сообщение об ошибке Postgresql и не могу решить, как ее решить:

(django-projectname)$ ./manage.py test tagger
Creating test database for alias 'default'...
Problem installing fixture '/Users/phil/Projects/RIG/projectname/django-projectname/projectname/tagger/fixtures/auth_testdata.json': Traceback (most recent call last):
  File "/Users/phil/.virtualenvs/django-projectname/lib/python2.6/site-packages/django/core/management/commands/loaddata.py", line 174, in handle
    obj.save(using=using)
  File "/Users/phil/.virtualenvs/django-projectname/lib/python2.6/site-packages/django/core/serializers/base.py", line 165, in save
    models.Model.save_base(self.object, using=using, raw=True)
  File "/Users/phil/.virtualenvs/django-projectname/lib/python2.6/site-packages/django/db/models/base.py", line 526, in save_base
    rows = manager.using(using).filter(pk=pk_val)._update(values)
  File "/Users/phil/.virtualenvs/django-projectname/lib/python2.6/site-packages/django/db/models/query.py", line 491, in _update
    return query.get_compiler(self.db).execute_sql(None)
  File "/Users/phil/.virtualenvs/django-projectname/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 869, in execute_sql
    cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
  File "/Users/phil/.virtualenvs/django-projectname/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql
    cursor.execute(sql, params)
  File "/Users/phil/.virtualenvs/django-projectname/lib/python2.6/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute
    return self.cursor.execute(query, args)
IntegrityError: duplicate key value violates unique constraint "auth_permission_content_type_id_codename_key"
DETAIL:  Key (content_type_id, codename)=(3, add_htuser) already exists.

Я пытался создать dumpdata для приложения auth, используя флаг --natural, но это ничего не изменило. Я в тупике и не могу понять, откуда у него дубликат ключа.

Класс htuser, на который он ссылается, является моделью Proxy в аутентификационном классе User.

Я использую Юг для миграций моих приложений, и звучит так, что https://stackoverflow.com/a/2888916/250962 может быть ответом, но я не понимаю, как «Удалить явно установленные значения первичного ключа из миграций данных»?

...