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

Django CMS 3.5从SQLite迁移至PostgreSQL报错求助

解决Django CMS 3.5从SQLite迁移PostgreSQL的loaddata报错问题

我之前帮同事处理过几乎一模一样的Django CMS 3.x迁移PostgreSQL的坑,咱们先从你现有步骤里的问题说起,再给你一套经过验证的操作流程:

你当前步骤的核心问题

  1. 手动TRUNCATE django_content_type是大忌:这个表的记录是Django自动维护的,和migrations的历史强关联,清空它会导致后续导入时外键关联、模型类型匹配全部混乱,绝对不能这么做。
  2. dumpdata时没有排除系统自动生成的表:django_content_type、auth_permission这些表在执行migrate后已经自动生成了正确的记录,你把它们一起导出再导入,必然会触发唯一性冲突或者关联错误。

修正后的完整迁移流程

1. 重新导出SQLite数据(排除冗余系统表)

在SQLite开发环境下执行,确保只导出业务数据和Django CMS的核心数据:

python manage.py dumpdata \
  --natural-primary \
  --natural-foreign \
  --exclude contenttypes \
  --exclude auth.permission \
  --exclude sessions \
  --exclude admin.logentry \
  --indent 2 > dump.json
  • --indent 2是为了让JSON文件更易读,方便后续排查错误;
  • 排除sessions是因为开发环境的会话数据没必要带到生产,排除admin.logentry同理。

2. 切换到PostgreSQL生产配置

确保你的settings.py里已经正确配置PostgreSQL:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'your_db_name',
        'USER': 'your_db_user',
        'PASSWORD': 'your_db_password',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

并且已经创建好数据库,给用户赋予足够的权限。

3. 执行数据库迁移

python manage.py migrate

这一步会自动创建所有需要的表,包括django_content_type、auth_permission这些系统表,以及Django CMS的所有核心表。

4. 导入数据

直接执行导入,不需要手动修改任何表:

python manage.py loaddata dump.json

如果仍然报错的排查方向

如果还是出现错误,大概率是SQLite和PostgreSQL的字段兼容性问题,比如:

  1. 主键序列不匹配:PostgreSQL的AutoField依赖序列生成主键,migrate后序列可能没有和导入数据的最大值对齐。可以用以下命令重置序列:
# 替换成你项目里的app名称,比如cms, menus, your_custom_apps
python manage.py sqlsequencereset cms menus | python manage.py dbshell
  1. 文本字段长度限制:SQLite对TextField没有长度限制,但PostgreSQL某些场景下可能有约束。可以检查报错里提到的模型字段,临时修改模型字段为models.TextField()再重新migrate,导入后改回(如果需要)。
  2. Django CMS特定模型的关联问题:如果是cms_page、placeholder这类表报错,可以先在shell里清空对应表的数据(注意外键关联),再导入:
# 进入Django shell
python manage.py shell
# 清空CMS页面数据(会自动级联删除关联的占位符、插件等)
from cms.models import Page
Page.objects.all().delete()
# 退出shell后再执行loaddata

内容的提问来源于stack exchange,提问作者Сергей Яхницкий

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:40:14