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

在Render上使用Docker+pyodbc连接SQL Server时遭遇0A00014D SSL/TLS错误的解决求助

在Render上使用Docker+pyodbc连接SQL Server时遭遇0A00014D SSL/TLS错误的解决求助

我正在使用FastAPI、SQLAlchemy和pyodbc开发Python应用,并部署到Render平台。但在尝试连接SQL Server数据库时,遇到了以下SSL/TLS相关的错误,一直无法解决,希望能得到帮助:

(pyodbc.Error) ('0A000', '[0A000] [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:0A00014D:SSL routines::invalid version number] (-1) (SQLDriverConnect)')

以下是我的数据库连接配置代码:

import urllib.parse
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# params = urllib.parse.quote_plus(
#     f"DRIVER={{ODBC Driver 18 for SQL Server}};"
#     f"SERVER={SERVER},{PORT};"
#     f"DATABASE={DATABASE};"
#     f"UID={USERNAME};"
#     f"PWD={PASSWORD};"
#     f"TrustServerCertificate=yes;"
#     "Encrypt=no"
# )
# connection_string = f"mssql+pyodbc:///?odbc_connect={params}"
# engine = create_engine(connection_string)
# SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

我已经尝试过将Encrypt设置为yes,还添加了MinTLSVersion=1.0参数,但错误依然存在。

这是我使用的Dockerfile:

FROM python:3.11-slim

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV OPENSSL_CONF=/etc/ssl/openssl.cnf

COPY openssl.cnf /etc/ssl/openssl.cnf

RUN apt-get update && apt-get install -y \
    curl gnupg apt-transport-https unixodbc unixodbc-dev gcc g++ \
    && curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null \
    && echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/microsoft.gpg] https://packages.microsoft.com/debian/12/prod bookworm main" > /etc/apt/sources.list.d/mssql-release.list \
    && apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql18 \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY requirements.txt ./
RUN pip install --upgrade pip && pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:5000"]

我已经尝试过以下几种方式来排查问题:

  • 切换使用ODBC Driver 17和18版本
  • 添加TrustServerCertificate=yes参数
  • 分别尝试Encrypt=no和Encrypt=yes配置
  • 添加MinTLSVersion=1.0参数
  • 确认数据库可访问且账号密码正确

请问我该如何解决这个在Render上的Docker容器中使用pyodbc时出现的0A00014D SSL/TLS错误?这个问题是和TLS配置、OpenSSL版本有关,还是Render平台处理出站连接的方式导致的?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 03:08:39