Django应用部署到Heroku后报错relation api_task不存在如何解决?
错误排查与解决方案
该错误的核心原因为Heroku部署环境中的Django项目未完成数据库迁移,导致api_task对应的数据表未被创建,具体排查与解决步骤如下:
排查步骤
- 确认
api应用已在项目settings.py的INSTALLED_APPS列表中完成注册,未注册的应用不会被Django纳入迁移生成范围,也就不会创建对应数据表。 - 检查
api应用目录下的migrations文件夹,确认已生成包含Task模型创建逻辑的迁移文件(通常为0001_initial.py格式的文件)。 - 确认你未将
migrations目录加入.gitignore配置,推送到Heroku的代码需要包含完整的迁移文件才能执行迁移操作。 - 执行
heroku run python manage.py showmigrations,查看Heroku环境中api应用的迁移状态,确认对应迁移是否未被执行。 - 确认Heroku已正确绑定Postgres数据库插件,且项目
settings.py中的生产环境数据库配置未硬编码本地数据库连接信息。
解决方法
- 本地完成迁移生成:
本地环境执行如下命令生成迁移文件,并测试功能正常:
将生成的迁移文件提交到Git仓库后,推送到Heroku。python manage.py makemigrations python manage.py migrate - 执行Heroku环境迁移:
手动执行如下命令在Heroku服务器上完成数据库迁移:
也可以在项目根目录的heroku run python manage.py migrateProcfile中添加release命令,实现每次推送代码后自动执行迁移:release: python manage.py migrate - 修正前端请求配置:
你当前Ajax代码中的请求地址硬编码为本地地址http://127.0.0.1:8000,部署到生产环境后需要将请求域名替换为你的Heroku应用域名,否则接口调用会失败。
内容的提问来源于stack exchange,提问作者usef
相关产品推荐
相关产品推荐

