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

Django部署至Heroku失败求助:PostgreSQL版本识别错误

解决Heroku部署Django时psycopg2无法识别PostgreSQL 10.3的问题

嘿,这个问题我之前也碰到过!根源就是旧版本的psycopg2(Python连接PostgreSQL的驱动)对PostgreSQL 10.x系列的版本号识别存在bug,没办法解析10.3这个版本,导致Heroku在构建过程中执行python setup.py egg_info时失败,最终push被拒绝。下面给你几个靠谱的解决办法:

方法一:升级psycopg2到兼容版本

这是最直接有效的方案,因为psycopg2从2.7.0版本开始就已经支持PostgreSQL 10了:

  • 打开你的requirements.txt文件,把原来的psycopg2条目替换成带版本号的兼容版本,或者用预编译的psycopg2-binary(构建更快,适合部署场景):
    # 要么用预编译的binary版本
    psycopg2-binary>=2.7.5
    # 要么用源码版的psycopg2(需要编译环境)
    psycopg2>=2.7.5
    
  • 本地先更新依赖包,确保没问题:
    pip install -r requirements.txt
    
  • 把修改后的requirements.txt提交到git:
    git add requirements.txt
    git commit -m "Upgrade psycopg2 to support PostgreSQL 10.3"
    
  • 最后重新尝试push到Heroku:
    git push heroku master
    

方法二:调整Heroku上的PostgreSQL版本(可选)

如果升级psycopg2后还是有问题,你可以让Heroku使用更稳定且被广泛支持的PostgreSQL版本,比如12或14:

  • 先查看当前Heroku上的PostgreSQL插件信息:
    heroku addons
    
  • 如果已经有postgres插件,直接升级到指定版本(这里以12为例):
    heroku addons:upgrade heroku-postgresql:hobby-dev --version=12
    
  • 完成后再次push代码即可。

额外注意事项

  • 确保你的Django版本和目标PostgreSQL版本兼容,比如非常老的Django版本(比如1.8以下)可能和PostgreSQL 10+存在兼容性问题,必要时可以升级Django到合适的稳定版本。
  • 如果你用的是Pipenv或Poetry管理依赖,记得同步更新Pipfile或pyproject.toml里的psycopg2版本,不要只修改requirements.txt。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:36:37