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

Dokku部署Django自定义用户模型报错accounts_customuser关系不存在

错误根因
  • 你将迁移文件加入了.gitignore规则,本地生成的accounts应用初始迁移文件没有被推送到Dokku远端,部署时无法执行建表操作生成accounts_customuser表,但auth系统、其他关联用户表的应用迁移都依赖该表的存在,因此执行迁移时抛出表不存在的错误。
  • 替换默认AUTH_USER_MODEL为自定义模型后,Django要求自定义用户模型的迁移优先级高于auth相关迁移,缺少对应迁移文件的情况下,迁移执行顺序也会触发该错误。
关于migrate --fake的风险

该操作只会在数据库的迁移记录表中标记迁移已完成,不会实际执行SQL修改表结构。你当前的问题是accounts_customuser表根本未创建,使用--fake只会让Django误以为迁移执行成功,后续所有涉及用户表的操作都会持续报错,还会打乱迁移记录的顺序,额外增加修复成本,完全不适合当前场景。

修复步骤
  1. 调整.gitignore规则,删除全局忽略迁移文件的配置,仅忽略迁移目录下的缓存文件:
    删掉.gitignore中类似*/migrations/*的规则,新增*/migrations/__pycache__/即可,Django官方要求正式项目的迁移文件必须提交到版本库同步所有环境。
  2. 本地生成干净的迁移文件:
    可以先清空本地开发库的迁移记录,或者新建临时空白测试库,执行python manage.py makemigrations,确认accounts/migrations目录下生成了包含CustomUser建表逻辑的0001_initial.py文件。
  3. 提交迁移文件到Git仓库:
    执行git add .、git commit -m "add all migration files"提交所有新增的迁移文件。
  4. 清理Dokku端的脏数据:
    • 如果是首次部署无生产数据,直接执行dokku postgres:reset <你的应用绑定的数据库服务名>重置数据库即可。
    • 如果已有生产数据,先执行dokku postgres:export <你的应用绑定的数据库服务名> > backup.sql备份数据,再清空数据库中django_migrations表的记录、删除已创建的不完整表。
  5. 重新执行部署命令git push dokku main:master即可正常完成迁移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 16:36:03