小编Den*_*ger的帖子

从 OpenShift 中运行的 Python 连接到 Azure SQL 数据库时,SQL_HANDLE_HENV 上的驱动程序的 SQLAllocHandle 失败 (0) (SQLDriverConnect)

仅当尝试从在 OpenShift 容器中运行的 Python 3.7 连接到我的 Azure DB 时(来自 rhel7:latest),我看到以下错误:

sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('IM004', "[IM004][unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed (0) (SQLDriverConnect)
Run Code Online (Sandbox Code Playgroud)

我在我的 MAC、Windows 和运行 RHEL7 基本容器的 RHEL7 Virtualbox 上的 Docker 中尝试了完全相同的代码 - 它始终有效!问题仅出现在我在 OpenShift 中运行的容器中!我检查了我可以在 1433 年从 Openshift telnet 到我的 Azure DB 服务器。

我也启用了 ODBC 日志,但没有比上述错误更多的信息。

我还应该检查什么?

以下是我在 Dockerfile 中设置 MSODBC 驱动程序的方法:

RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo && \
 yum remove unixODBC-utf16 unixODBC-utf16-devel && \
 ACCEPT_EULA=Y yum install -y msodbcsql17 && \
 yum install -y unixODBC-devel
Run Code Online (Sandbox Code Playgroud)

这是引发错误的代码:

在modules.database里面:

pyodbc_connstring_safe = …
Run Code Online (Sandbox Code Playgroud)

pyodbc python-3.x azure-sql-database openshift-3 msodbcsql17

6
推荐指数
1
解决办法
7865
查看次数