IntegrityError: duplicate key value violates unique constraint «django_content_type_app_label_model_key»

При переносе базы данных с mysql сервера на postgresql через django наткнулся на ошибку,
сделал дамп dumpdata в формате xml и потом восстановил в базу через loaddata:

python manage.py dumpdata -v 2 —format=xml —traceback > baza.xml
python manage.py loaddata baza.xml

получил при восстановлении manage.py loaddata ошибку:

python manage.py loaddata baza.xml
IntegrityError: duplicate key value violates unique constraint «django_content_type_app_label_model_key»
DETAIL: Key (app_label, model)=(affiliate, affiliate) already exists.


решение достаточно простое, удалить следующие таблицы в базе сайта на django:

psql baza
delete from auth_group_permissions; delete from auth_permission; delete from django_admin_log; delete from django_content_type;

2 comments on “IntegrityError: duplicate key value violates unique constraint «django_content_type_app_label_model_key»

  1. Berg 29.11.2012 23:01

    такое случается когда поле, для которого установлен sequence, заполняется в обход этого самого sequence. Например мы вручную заполняем id, sequence ничего об этом не знает и когда его вызывают (при добавлении новой записи) делает инкрементацию без учета наших значений. Это приводит к дублированию id. Поэтому приходится переинициализировать sequence выполнив

    select setval(‘field_name_id_seq’, (select max(id) + 1 from field_name));
    И все.
    Еще один вариант предлагается
    REINDEX INDEX field_name_pkey;
    Но были случаи когда это не помогало.

  2. Berg 29.11.2012 23:04

    Хотя в вашем варианте действительно наверное стоит удалять данные — так как вы пытаетесь перезаписать айдишниками из дампа, описанная мною выше ситуация скорее возникает при попытке добавить новую запись.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>