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

本地Django执行migrate报SSL错误:服务器不支持SSL但被要求

解决Django迁移时PostgreSQL SSL连接错误问题

以下是针对该问题的排查和解决步骤:

  • 确认Django数据库配置是否正确加载
    检查settings.py中的DATABASES配置,确保OPTIONS参数在目标数据库条目下正确定义,避免拼写错误或层级错误:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': '你的数据库名',
            'USER': '你的数据库用户',
            'PASSWORD': '你的数据库密码',
            'HOST': 'localhost',
            'PORT': '5432',
            'OPTIONS': {'sslmode': 'disable'},
        }
    }
    

    可以临时在dev.py中添加配置验证代码,运行python3 dev.py确认配置是否生效:

    from django.conf import settings
    print(settings.DATABASES['default']['OPTIONS'])
    
  • 检查PostgreSQL服务端配置

    1. 打开pg_hba.conf文件(Mac通过brew安装的路径通常为/usr/local/var/postgres/pg_hba.conf),确保本地连接条目未强制SSL:
      host    all             all             127.0.0.1/32            md5
      host    all             all             ::1/128                 md5
      
    2. 打开postgresql.conf文件,确认SSL处于关闭状态:
      ssl = off
      
    3. 修改后重启PostgreSQL服务:brew services restart postgresql
  • 排查环境变量干扰
    检查系统是否存在PGSSLMODE环境变量强制SSL连接,运行echo $PGSSLMODE查看值。如果输出为require或其他强制SSL的选项,临时取消该变量后再执行迁移:

    unset PGSSLMODE
    python3 dev.py migrate
    
  • 验证Django连接逻辑
    编写简单测试脚本test_db.py,用Django的连接方式测试数据库,确认错误是否一致:

    import django
    django.setup()
    from django.db import connection
    
    try:
        with connection.cursor():
            print("数据库连接成功")
    except Exception as e:
        print(f"连接失败详情: {e}")
    

    运行python3 test_db.py,根据输出进一步定位问题。

  • 重装psycopg2依赖
    虽然直接用psycopg2能连接,但Django环境的依赖可能存在异常,尝试卸载重装:

    pip uninstall psycopg2-binary
    pip install psycopg2-binary
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:22:09