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

Mac下Django连接SQL Server遇ODBC Driver 17登录超时错误求助

排查「ODBC Driver 17 for SQL Server Login timeout expired (0)」错误的步骤

一、验证网络连通性

  • 在Mac终端执行 nc -zv <你的DB_SERVER> 1433,检查服务器端口是否可达:
    • 如果连接失败,优先排查SQL Server所在服务器的防火墙/安全组是否开放1433端口
    • 确认DB_SERVER地址是否正确(公网IP、内网IP或域名是否无误)
    • 若为本地虚拟机/容器运行的SQL Server,检查端口映射是否配置正确

二、测试pyodbc直接连接

跳过Django,用pyodbc直接验证驱动和连接参数:

import pyodbc
conn_str = (
    "DRIVER={ODBC Driver 17 for SQL Server};"
    "SERVER=<你的DB_SERVER>,1433;"
    "DATABASE=<你的DB_NAME>;"
    "UID=<你的DB_USER>;"
    "PWD=<你的DB_PASSWORD>"
)
try:
    conn = pyodbc.connect(conn_str)
    print("连接成功")
    conn.close()
except Exception as e:
    print(f"连接失败:{e}")
  • 若此测试也超时,问题出在驱动、网络或SQL Server配置,而非Django
  • 若测试成功,再聚焦Django配置问题

三、检查Django数据库配置细节

  • 验证环境变量是否正确加载:终端执行 echo $DB_NAME、echo $DB_SERVER,确认输出符合预期
  • 暂时替换环境变量为硬编码的真实值,测试migrate,排除环境变量加载失败的可能:
    DATABASES = {
        "default": {
            'ENGINE': 'mssql',
            'NAME': 'mytestdb',
            'HOST': '<真实服务器地址>',
            'PORT': 1433,
            'USER': '<真实用户名>',
            'PASSWORD': '<真实密码>',
            'Trusted_Connection': 'no', 
            'OPTIONS': {
                    'driver': 'ODBC Driver 17 for SQL Server',
                    'isolation_level':'READ UNCOMMITTED',
            },
        }
    }
    
  • 若使用SQL Server命名实例,需确认实例端口(非默认1433时需修改PORT值),或把HOST格式改为<服务器名>,<实例端口>

四、Mac ODBC驱动检查

  • 终端执行 odbcinst -j,查看输出的ODBC Drivers列表中是否存在ODBC Driver 17 for SQL Server
  • 若驱动存在但无效,尝试卸载重装ODBC Driver 17,或升级至ODBC Driver 18测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:15:33