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

Django 1.11.3无法连接Microsoft SQL Server问题求助

解决Django 1.11.3连接Microsoft SQL Server的OperationalError问题

咱们一步步来排查这个连接问题,从最基础的环节开始,先排除底层的问题,再看Django配置:

第一步:先测试FreeTDS的直接连通性

先跳过Django,直接用FreeTDS自带的tsql工具测试连接,这能帮我们快速定位是ODBC层的问题还是Django配置的问题:

  • 打开终端,替换成你的实际参数后运行:
    tsql -H <host-id> -p 1433 -U <USER> -P <password>
    
  • 如果连接成功,你会看到1>的提示符,输入quit就能退出;如果失败,说明问题出在FreeTDS安装、网络或者SQL Server本身,和Django无关。

第二步:匹配TDS版本与SQL Server版本

这是最容易踩的坑之一:不同版本的SQL Server需要对应特定的TDS版本,不匹配就会连不上。先确认你的SQL Server版本对应的TDS版本:

  • SQL Server 2008/2008 R2 → TDS 7.1
  • SQL Server 2012/2014 → TDS 7.2
  • SQL Server 2016及以上 → TDS 7.3
  • 然后更新Django的settings.py配置,补上端口和TDS版本参数:
    DATABASES = {
        'mssql': {
            'ENGINE':'sql_server.pyodbc',
            'NAME': '<NAME>',
            'USER': '<USER>',
            'PASSWORD':'<password>',
            'HOST':'<host-id>',
            'PORT': '1433',  # SQL Server默认端口,如果是自定义端口请修改
            'OPTIONS': {
                'driver':'FreeTDS',
                'tds_version': '7.3',  # 替换成你对应的TDS版本
                'unicode_results': True,  # 提前避免中文乱码问题
            }
        }
    }
    

第三步:确认ODBC驱动路径正确

检查你的odbcinst.ini里的Driver路径是否真的存在:

  • 运行命令验证:
    ls /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
    
  • 如果返回“No such file or directory”,说明FreeTDS的安装路径不对,常见的替代路径有/usr/lib/libtdsodbc.so或/usr/local/lib/libtdsodbc.so,找到正确路径后更新odbcinst.ini即可。

第四步:排查网络与防火墙拦截

如果前面的tsql测试失败,大概率是网络问题:

  • 先测试服务器是否能ping通:
    ping <host-id>
    
  • 再测试1433端口是否开放:
    telnet <host-id> 1433
    
    如果telnet连不上,要么是SQL Server所在服务器的防火墙没开放1433端口,要么是你的机器到服务器的网络有拦截,需要联系运维人员调整。

额外注意点

  • 确保pyodbc版本和Django 1.11兼容:Django 1.11推荐使用pyodbc 3.x版本(比如3.0.10),过高版本可能出现兼容性问题,可以用pip install pyodbc==3.0.10指定安装。
  • 如果你的SQL Server用了非默认端口,一定要把PORT参数改成对应的端口号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:04:34