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

MacBook M1环境下pyodbc连接MS-SQL服务器报错求助

解决pyodbc连接MS-SQL时的TCP Provider错误10054

针对你遇到的pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 18 for SQL Server]TCP Provider: Error code 0x2746 (10054)')错误,结合你的Mac M1环境,给出以下具体解决思路:

1. 修复脚本中的连接字符串错误

你的代码存在逻辑错误:cnxn_str = pyodbc.connect(...)这行已经执行了连接操作,返回的是连接对象而非字符串,后续再用pyodbc.connect(cnxn_str)会直接引发异常。修正后的代码应该是:

import pyodbc
import csv
import boto3
    
# Credentials for SQL server
server = "1.1.1.1"
database = "db1"
username = "user"
password = "password"

# 正确构建连接字符串并建立连接
cnxn_str = (
    "DRIVER={ODBC Driver 18 for SQL Server};"
    f"SERVER={server};"
    f"DATABASE={database};"
    f"UID={username};"
    f"PWD={password}"
)
cnxn = pyodbc.connect(cnxn_str)

2. 调整ODBC加密参数

ODBC Driver 18默认强制启用加密,若你的SQL Server未配置TLS或加密协商不兼容,会触发连接重置。在连接字符串中添加以下参数:

  • Encrypt=Optional:允许非加密连接
  • TrustServerCertificate=Yes:跳过服务器证书验证(仅测试环境使用,生产环境需配置合法证书)

示例:

cnxn_str = (
    "DRIVER={ODBC Driver 18 for SQL Server};"
    f"SERVER={server};"
    f"DATABASE={database};"
    f"UID={username};"
    f"PWD={password};"
    "Encrypt=Optional;"
    "TrustServerCertificate=Yes"
)

3. 确保OpenSSL库匹配

Mac M1的arm64架构下,ODBC驱动可能无法正确找到OpenSSL 3.1.0的库,可通过设置环境变量指定路径:

export DYLD_LIBRARY_PATH=/usr/local/opt/openssl@3/lib

执行上述命令后再运行Python脚本,或把环境变量添加到~/.zshrc(或~/.bashrc)中永久生效。

4. 验证网络连通性

错误10054多数是网络层面的问题,先确认SQL Server端口(默认1433)是否可访问:

nc -zv 1.1.1.1 1433

若连接失败,检查:

  • 服务器端防火墙/安全组是否开放1433端口
  • 本地VPN、防火墙是否拦截了出站连接
  • 服务器IP或端口是否填写错误

5. 确认ODBC驱动架构匹配

确保你安装的是arm64版本的ODBC Driver 18 for SQL Server,而非x86_64版本。重新安装对应架构的驱动后再测试连接。

内容的提问来源于stack exchange,提问作者Henk van der Duim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:22:39