应用程序背景:尝试部署一个自动化应用程序,其中用户选择*访问文件并可视化来自Python Flask后端计算的图形。
在本地下载“访问驱动程序”:https://www.microsoft.com/en-us/download/details.aspx?id=54920 [运行良好]。但无法部署在 Azure 上。
我尝试过的事情:
我尝试使用 Github CI/CD 运行此应用程序,但使用 Github actions azure 只能提供在 Linux 操作系统上运行的选项。这会给我同样的错误(pyodbc 连接)
构建可以消除此错误的 Docker 映像,但是,当在 Dockerfile 下选择“FROM python:slim-buster”时 - 它使用 linux 生成了 docker 映像,但出现了相同的错误。
此外,尝试使用
FROM microsoft/nanoserver
在 Dockerfile 中添加 Windows 操作系统,但在创建映像时仍然收到错误。
我对所有这些都很陌生,认为可能会犯错误。任何帮助将不胜感激。
经过大量的试验和错误,我能够在Azure上的Windows服务器上部署。
什么有效:
使用 ODBC 驱动程序 (AccessDatabaseEngine.exe) 在 Windows 服务器上部署应用程序。不是 64 位(AccessDatabaseEngine_X64.exe)。
也可以使用 Docker 映像进行部署,但 ** FROM microsoft/nanoserver ** 无法构建任何映像。而是尝试使用 ** FROM mcr.microsoft.com/windows/servercore:ltsc2019 **
为此问题和类似问题添加一些知识:
我似乎成功地通过基于 mcr.microsoft.com/windows/servercore:ltsc2022 的 docker 映像安装了 AccessDatabaseEngine_X64.exe 和 AccessDatabaseEngine.exe。 跑步
`Get-OdbcDriver | Where-Object { $_.Name -like '*Access*' }`
在 Powershell 中列出了驱动程序,就像它已安装一样,但当我尝试在一个非常简单的 python 脚本中使用它时,我仍然收到这个非常神秘的消息;
pyodbc.Error: ('HY000', 'The driver did not supply an error!')
启用ODBC跟踪并查看日志没有给出更详细的解释。
为我解决这个问题的方法是将 Dockerfile 基于另一个 Windows Base 映像。其中任何一个都对我有用;
mcr.microsoft.com/windows/server:ltsc2022
,mcr.microsoft.com/windows:ltsc2019
现在我可以神奇地使用 Microsoft Access 数据库引擎!