You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中SQLite迁移数据至PostgreSQL遇唯一性约束错误求助

解决Django从SQLite迁移到PostgreSQL时loaddata的ContentType重复错误

错误原因

dumpdata默认会导出contenttypes表的数据,但当你在PostgreSQL上执行migrate完成表结构创建后,Django已经自动生成了对应应用的ContentType记录,导入时就触发了唯一约束冲突(app_label和model的组合已经存在)。

解决方案

方案1:导出时排除冲突表(推荐)

修改导出命令,跳过contenttypes和依赖它的auth.permission表,避免导出不必要的系统自动生成数据:

python -Xutf8 .\manage.py dumpdata --indent=4 --exclude=contenttypes --exclude=auth.permission --output=data.json

之后重新执行导入命令即可:

python .\manage.py loaddata data.json

方案2:导入时排除冲突表

如果已经生成了包含冲突数据的data.json,可以直接在导入时指定排除表:

python .\manage.py loaddata data.json --exclude=contenttypes --exclude=auth.permission

方案3:清空PostgreSQL中的ContentType记录(仅适用于全新数据库)

如果你的PostgreSQL数据库是刚初始化、migrate后无业务数据的状态,可以先清空自动生成的ContentType记录,再导入:

  1. 进入Django Shell:
python .\manage.py shell
  1. 在Shell中执行删除操作:
from django.contrib.contenttypes.models import ContentType
ContentType.objects.all().delete()
exit()
  1. 重新执行导入命令。

额外提示

导出时建议同时排除admin.logentry这类系统日志表,进一步减少导入冲突的可能性:

python -Xutf8 .\manage.py dumpdata --indent=4 --exclude=contenttypes --exclude=auth.permission --exclude=admin.logentry --output=data.json

内容的提问来源于stack exchange,提问作者MohNamdar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 11:19:58