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

Heroku部署Django应用:PostgreSQL迁移失败排查求助

解决Django部署到Heroku后数据库无表的问题

我来帮你一步步排查和解决这些问题,核心矛盾是迁移(migrate)命令没有正确执行,先从这里入手:

一、先解决migrate不执行的核心问题

本地Docker里你把migrate放到了web容器的启动命令里,但Heroku的运行机制和本地Docker不一样,直接在web启动命令里跑migrate很容易因为数据库未就绪而失败,而且日志很难追踪。正确的做法是把迁移放到Heroku的Release阶段:

  1. 在你的项目根目录创建一个Procfile(无后缀名),内容如下:

    release: python manage.py migrate
    web: gunicorn your_project_name.wsgi:application --bind 0.0.0.0:$PORT
    

    注意把your_project_name换成你实际的Django项目名(就是包含wsgi.py的那个文件夹名)。

  2. 如果你已经部署过应用,先手动执行一次迁移救急:
    安装Heroku CLI后,登录并进入项目目录,执行:

    heroku run python manage.py migrate
    

    执行完后刷新页面,应该就能解决wagtailcore_site不存在的报错了。

二、逐个解决你的具体疑问

1. 无法直接连接Heroku Dyno

其实用Heroku CLI就能轻松进入Dyno的shell,步骤很简单:

  • 先安装Heroku CLI并登录(执行heroku login)
  • 进入你的项目根目录,执行:
    heroku run bash
    
    进去后你就能像本地一样执行Django命令了,比如python manage.py showmigrations查看迁移状态,python manage.py dbshell进入数据库shell,调试起来非常方便。

2. 确认PostgreSQL是否关联成功

执行这个命令查看Heroku的环境变量:

heroku config

如果能看到DATABASE_URL这个变量,说明Heroku PostgreSQL已经成功关联。另外,你也可以在Dyno的shell里执行python manage.py dbshell,然后输入\dt,如果能看到数据库的系统表(比如pg_stat_user_tables),说明连接完全正常。

3. 页面报错ProgrammingError

这个就是典型的数据库未执行迁移的问题——Django能连接到空数据库,但找不到对应的业务表。只要执行了migrate命令创建好表,这个报错就会消失。

4. 为什么web命令中的migrate无输出?

有两个主要原因:

  • 数据库就绪时机问题:Heroku启动web dyno时,可能PostgreSQL实例还没完全初始化完成,此时执行migrate会失败,但因为进程直接退出,Heroku可能不会保留这部分错误日志。
  • 日志捕获问题:本地Docker的日志会直接输出,但Heroku的web日志主要记录web服务启动后的输出,如果migrate在服务启动前失败,这部分日志可能不会被正常捕获。

用Release阶段执行migrate就可以避免这些问题——Heroku会确保Release阶段的命令在web dyno启动前执行,而且会单独记录Release阶段的日志,你可以用heroku logs --ps release查看迁移的具体输出。

三、额外注意事项

  • 生产环境不要用runserver,它是开发服务器,性能和稳定性都不够,必须用gunicorn这类生产级WSGI服务器,这也是我在Procfile里写gunicorn命令的原因。
  • 可以在Dyno的shell里验证数据库配置是否正确:
    python manage.py shell
    
    然后输入:
    from django.conf import settings
    print(settings.DATABASES['default'])
    
    确认输出的配置和Heroku的DATABASE_URL一致。
  • 如果migrate还是有问题,执行python manage.py migrate --verbosity 2,它会输出详细的迁移日志,帮你定位具体错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:36