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

部署Django应用至Render遇PostgreSQL SSL连接错误求助

解决Django连接Render PostgreSQL时的SSL协商错误

问题现象

启动部署在Render的Django应用时,出现数据库连接错误:

django.db.utils.OperationalError: connection to server at "viaduct.proxy.rlwy.net" (35.212.103.87), port 52584 failed: received invalid response to SSL negotiation: I

修复步骤

  • 强制启用SSL连接
    Render托管的PostgreSQL要求必须通过SSL连接,需在Django数据库配置中明确添加SSL参数:

    直接配置数据库参数的写法:

    # settings.py
    import os
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': os.environ.get('DB_NAME'),
            'USER': os.environ.get('DB_USER'),
            'PASSWORD': os.environ.get('DB_PASSWORD'),
            'HOST': os.environ.get('DB_HOST'),
            'PORT': os.environ.get('DB_PORT'),
            'OPTIONS': {
                'sslmode': 'require',  # 关键配置项
            },
        }
    }
    

    使用dj-database-url解析Render提供的DATABASE_URL的写法:

    # settings.py
    import os
    import dj_database_url
    
    DATABASES = {
        'default': dj_database_url.config(
            default=os.environ.get('DATABASE_URL'),
            conn_max_age=600,
            ssl_require=True  # 强制启用SSL
        )
    }
    
  • 替换psycopg2为psycopg2-binary
    在requirements.txt中使用预编译版本的psycopg2,避免Render部署时的编译问题:

    psycopg2-binary>=2.9.0
    django>=4.0  # 根据你的实际Django版本调整
    
  • 验证环境变量准确性
    检查Render平台上设置的环境变量,确保DB_HOST、DB_PORT、DB_NAME、DB_USER、DB_PASSWORD完全匹配Render PostgreSQL实例提供的信息,尤其是代理地址和端口不能出错。

  • 本地调试注意事项
    如果本地调试时连接Render数据库,需确保本地网络未阻止对应端口的SSL连接,同时保持上述SSL配置不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:35:55