仅当尝试从在 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