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

解决部署连接Oracle Cloud Database的Django应用到Heroku的报错

解决Heroku部署Django应用时Oracle Instant Client缺失问题

1. 准备Oracle Instant Client文件

  • 下载64位Linux版本的Oracle Instant Client Basic包(版本需与cx_Oracle兼容,建议选19c或21c,匹配Oracle Cloud Database版本)
  • 解压包到项目根目录下的oracle_client/文件夹,确保目录包含libclntsh.so、libclntshcore.so、libnnz19.so等核心库文件
  • 将oracle_client/目录加入Git追踪(若.gitignore排除了该目录,需移除对应规则)

2. 配置Heroku环境变量加载脚本

  • 在项目根目录创建.profile.d/文件夹,新建oracle_setup.sh脚本,内容如下:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/app/oracle_client
    export ORACLE_HOME=/app/oracle_client
    
  • 将.profile.d/目录加入Git追踪,确保Heroku启动时自动加载该脚本,设置库文件路径

3. 调整Django数据库配置

  • 在settings.py中,通过环境变量读取Oracle Cloud Database连接信息,避免硬编码:
    import os
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.oracle',
            'NAME': os.environ.get('ORACLE_DB_SERVICE_NAME'),  # Oracle Cloud通常用服务名而非SID
            'USER': os.environ.get('ORACLE_DB_USER'),
            'PASSWORD': os.environ.get('ORACLE_DB_PASSWORD'),
            'HOST': os.environ.get('ORACLE_DB_HOST'),
            'PORT': os.environ.get('ORACLE_DB_PORT', '1521'),
        }
    }
    
  • 在Heroku控制台或通过命令行设置对应环境变量:
    heroku config:set ORACLE_DB_SERVICE_NAME=<你的服务名>
    heroku config:set ORACLE_DB_USER=<数据库用户名>
    heroku config:set ORACLE_DB_PASSWORD=<数据库密码>
    heroku config:set ORACLE_DB_HOST=<Oracle Cloud数据库主机地址>
    

4. 完善依赖与构建配置

  • 在requirements.txt中添加兼容版本的cx_Oracle(例如,Instant Client 19c对应cx_Oracle≥7.3):
    cx-Oracle>=8.3.0
    django>=4.2  # 匹配你的Django版本
    
  • 若使用非官方Oracle后端,可添加django-oracle-backend到依赖中(按需选择)

5. 测试与部署

  • 本地模拟测试:在Linux环境下设置LD_LIBRARY_PATH指向本地oracle_client/目录,运行python manage.py check和python manage.py migrate验证数据库连接
  • 提交所有修改到Git后,推送至Heroku:
    git add .
    git commit -m "Add Oracle Instant Client and config"
    git push heroku main
    
  • 实时查看部署日志排查问题:
    heroku logs --tail
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:17:20