Проблема дублирования ключа при загрузке файла back.json PostgreSQL

У меня есть база данных PostgreSQL, в которой я выполнил python manage.py dumpdata для резервного копирования данных в файл json. Я создал новую базу данных PostgreSQL, выполнил миграцию, и все заработало как часы. Когда я попытался загрузить файл backup.json с помощью python manage.py loaddata backup.json, я получил эту ошибку.

Could not load contenttypes.ContentType(pk=15): duplicate key value violates unique constraint "django_content_type_app_label_76bd3d3b_uniq"
DETAIL:  Key (app_label, model)=(navigation, navigation) already exists.

Я проверил phpPgAdmin, и там есть строка для новостей. Есть ли способ загрузить файл резервной копии json без включения типов контента или, что еще лучше, сбросить все, кроме данных типов контента?


person TJB    schedule 26.09.2017    source источник
comment
если вы просто исключите ContentTypes - вы можете столкнуться с еще одним дубликатом, и еще, и еще. Я думаю, что требуется более широкое изменение подхода   -  person Vao Tsun    schedule 26.09.2017
comment
Есть некоторые различия между родным postgres pg_restore и django loaddata. В этой статье четко объясняются эти различия и возможные решения — deephacks.com/articles/entry/ Но, как советует @Vao Tsun, было бы лучше найти эти ограничения глубоко в ваших данных.   -  person Mahesh H Viraktamath    schedule 26.09.2017


Ответы (1)


Я получал аналогичную ошибку:

django.db.utils.IntegrityError: проблема с установкой приспособления '/home/knysys/ogmius/ogmius/db.json': не удалось загрузить типы содержимого. (app_label, model)=(auth, user) уже существует

После этого я узнал, что если вы восстанавливаете новую базу данных из другой базы данных, вам необходимо сбросить данные следующим образом:

./manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json

а затем загрузите новую базу данных следующим образом:

./manage.py loaddata db.json
person ARKhan    schedule 06.12.2019