При переносе базы данных с 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;
такое случается когда поле, для которого установлен sequence, заполняется в обход этого самого sequence. Например мы вручную заполняем id, sequence ничего об этом не знает и когда его вызывают (при добавлении новой записи) делает инкрементацию без учета наших значений. Это приводит к дублированию id. Поэтому приходится переинициализировать sequence выполнив
select setval(‘field_name_id_seq’, (select max(id) + 1 from field_name));
И все.
Еще один вариант предлагается
REINDEX INDEX field_name_pkey;
Но были случаи когда это не помогало.
Хотя в вашем варианте действительно наверное стоит удалять данные – так как вы пытаетесь перезаписать айдишниками из дампа, описанная мною выше ситуация скорее возникает при попытке добавить новую запись.