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

Docker部署MSSQL Server后,SQLAlchemy连接登录超时问题求助

解决Docker中MSSQL Server与SQLAlchemy连接超时问题

针对你在Ubuntu 22.04上遇到的SQLAlchemy连接Docker中MSSQL Server超时(HYT00错误),可以按以下步骤排查修复:

1. 验证Docker容器状态

首先确认MSSQL容器是否正常运行:

  • 执行 docker ps 查看sql1容器状态,确保状态为Up
  • 如果容器未启动,执行 docker start sql1
  • 查看容器启动日志排查错误:docker logs sql1,重点检查是否有密码不符合要求或服务启动失败的提示

2. 处理防火墙端口限制

Ubuntu默认启用ufw防火墙,可能阻止了1433端口的访问:

  • 临时关闭防火墙测试:sudo ufw disable,如果连接恢复,说明是防火墙问题
  • 永久开放1433端口:sudo ufw allow 1433/tcp,再重新启用防火墙 sudo ufw enable

3. 修正ODBC连接字符串(关键)

ODBC Driver 18默认强制加密连接,而Docker中的MSSQL使用自签名证书,会导致连接验证失败。需要在连接字符串中添加证书信任参数:
修改你的Python脚本中params的定义:

params = urllib.parse.quote_plus("Driver={ODBC Driver 18 for SQL Server};Server=tcp:localhost:1433;Uid=SA;Pwd=YourStrong_Passw0rd;TrustServerCertificate=Yes;")

或者使用Encrypt=optional参数替代,跳过加密要求:

params = urllib.parse.quote_plus("Driver={ODBC Driver 18 for SQL Server};Server=tcp:localhost:1433;Uid=SA;Pwd=YourStrong_Passw0rd;Encrypt=optional;")

4. 确认Ubuntu上ODBC驱动安装完整

确保系统已正确安装微软ODBC驱动及依赖:

  1. 添加微软APT源:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
  1. 更新源并安装驱动:
sudo apt update
sudo ACCEPT_EULA=Y apt install -y msodbcsql18 unixodbc-dev
  1. 确认Python依赖已安装:
pip install sqlalchemy pyodbc

5. 排除SQLAlchemy干扰,直接测试pyodbc连接

先写一个极简测试脚本验证基础连接是否正常:

import pyodbc
# 用修改后的连接字符串
conn = pyodbc.connect('Driver={ODBC Driver 18 for SQL Server};Server=tcp:localhost:1433;Uid=SA;Pwd=YourStrong_Passw0rd;TrustServerCertificate=Yes;')
cursor = conn.cursor()
cursor.execute("SELECT @@VERSION;")
row = cursor.fetchone()
print(row[0])
conn.close()

如果这个脚本能正常输出SQL Server版本,再回到SQLAlchemy的代码测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:11:39