将 Json 文件中的数据加载到 PostgresSql 中会导致:错误“重复键值违反唯一约束 - 已存在。”
Posted
技术标签:
【中文标题】将 Json 文件中的数据加载到 PostgresSql 中会导致:错误“重复键值违反唯一约束 - 已存在。”【英文标题】:Loading data from Json file into PostgresSql causes: ERROR "duplicate key value violates unique constraint - already exists." 【发布时间】:2019-09-02 15:36:07 【问题描述】:我正在将我的 Django 网站部署到 Google Cloud。步骤之一是将数据库更改为 postgresSQL。当我在本地使用 SqlLite 时,我想将所有数据库迁移到 postgresSql 中。我按照在线指南先转储数据,然后将 settings.py 中的数据库更改为新数据库。我已经完成了这个命令的一切;
python manage.py loaddata datadump.json
其中 datadump.json 是从 SQLITE 转储的数据库。现在我被这个错误困住了
django.db.utils.IntegrityError: Problem installing fixtur, Could not
load users.Profile(pk=3): duplicate key value violates unique
constraint "users_profile_user_id_key" DETAIL: Key (user_id)=(1) already exists.
我不知道该怎么做。我查到的一些答案是这样的:
postgresql duplicate key violates unique constraint
与
Django admin "duplicate key value violates unique constraint" Key (user_id)=(1) already exists
没有帮助,因为我无法理解发生了什么。 6 年前我确实使用过 mysql,但我无法理解这一点。
我设法从在线资源中运行了一些 SQL 命令,并为我的数据库生成了这些命令:
!https://imgur.com/a/qQNLEs7
我遵循了这些指南:
https://medium.com/@aaditya.chhabra/how-to-use-postgresql-with-your-django-272d59d28fa5
https://www.shubhamdipt.com/blog/django-transfer-data-from-sqlite-to-another-database/
【问题讨论】:
【参考方案1】:-
删除数据库
创建一个新的并运行迁移
python manage.py 迁移
并尝试使用 json 文件导入数据,
python manage.py loaddata datadump.json
错误是由您使用“createsuperuser”命令创建的数据库中的超级用户对象引起的。
【讨论】:
我试图这样做,仍然给出了同样的错误。很明显,我没有任何超级用户。这是错误; django.db.utils.IntegrityError:安装夹具“C:\Users\~\myDjangoSite\venv\my Site\datadump.json”时出现问题:无法加载 contenttypes.ContentType(pk=1):重复键值违反了唯一约束“ django_c ontent_type_app_label_model_76bd3d3b_uniq" DETAIL: Key (app_label, model)=(admin, logentry) 已经存在。 这是来自 >python manage.py migrate 的日志 要执行的操作:应用所有迁移:管理员、身份验证、博客、内容类型、会话、用户 正在运行迁移:没有要应用的迁移。【参考方案2】:TL;DR
只需从django_site
表中删除不需要的记录。
简介
我遇到了同样的问题,因为我在我的网站中使用了 Signin with Google。所以我试了两次,看看如何设置社交登录。结果,表 django_site
创建了 2 条记录。只需从该 Table 或 Collection
【讨论】:
嗨,怎么办?我的意思是我怎么知道表中有不需要的记录? 如果您只使用过 Signin with Google。打开你的数据库。现在,打开名为django_site
的表。如果有超过 1 条记录,则该记录是不需要的记录。就我而言,id:1
是不需要的。如果您同时使用了多个身份验证,例如 facebook 和 google。对不起,我帮不了你。以上是关于将 Json 文件中的数据加载到 PostgresSql 中会导致:错误“重复键值违反唯一约束 - 已存在。”的主要内容,如果未能解决你的问题,请参考以下文章
将 Pyspark 数据帧加载到 postgres RDS 中的表中时出错
如何将资产文件夹中的 JSON 数据加载到 Recyclerview