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

Django项目本地运行正常 部署到Heroku报main_chapter表不存在错误

错误根因

relation "main_chapter" does not exist是PostgreSQL的原生报错,意为数据库中不存在main_chapter表,和你使用的psycopg2/psycopg2-binary包无任何关联。
Django默认会按照<APP名称>_<模型类小写名>的规则生成数据库表名,你的main应用下一定定义过名为Chapter的模型类,因此对应表名就是main_chapter。你本地运行正常是因为本地数据库已经执行过迁移生成了对应表,而Heroku上的PostgreSQL数据库没有执行迁移,因此缺少该表。

解决方案

  • 首先确认你没有把各APP下的migrations目录加入.gitignore,所有迁移文件都已提交到代码仓库
  • 推送最新代码到Heroku后,执行Heroku CLI命令运行数据库迁移:
    heroku run python manage.py migrate
    
  • 如果执行迁移后仍报错,可手动验证表是否存在:运行heroku run python manage.py dbshell进入数据库命令行,输入\d查看所有表,确认main_chapter是否在列表中
  • 如果确认表未生成,先检查main应用是否已添加到settings.py的INSTALLED_APPS列表,未加入的话Django不会识别该应用的迁移文件
  • 如果是之前误删了main应用的迁移文件,可本地重新生成迁移:
    python manage.py makemigrations main
    
    提交新生成的迁移文件后重新推送到Heroku,再次执行迁移命令即可。

psycopg2相关说明

Heroku环境安装原生psycopg2容易缺少编译依赖报错,使用psycopg2-binary是官方推荐的部署方案,完全不会引发上述问题,无需调整。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:24:02