我正在尝试使用
pyodbc
连接到 Azure 上托管的 MSSQL 数据库,虽然它在本地工作,但当我将更改推送到 Heroku 时,我无法让它工作。我正在运行 Windows。这是它给我的错误:
pyodbc.Error: ('01000', "[01000] [unixODBC][驱动程序管理器]无法打开 lib“SQL Server 的 ODBC 驱动程序 13”:找不到文件 (0) (SQLDriverConnect)")
这就是我开始连接的方式:
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};
SERVER=serverurl;
DATABASE=db;
UID=user;
PWD=password')
这是我的 Aptfile,其中包含 Heroku 驱动程序的下载链接:
unixodbc
unixodbc-dev
python-pyodbc
libsqliteodbc
https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql/msodbcsql_13.1.9.2-1_amd64.deb
还有我的
requirements.txt
:
...
pyodbc==4.0.24
我什至安装了一个构建包(https://github.com/heroku/heroku-buildpack-apt)。据我了解,Heroku 端不存在驱动程序,因此它无法找到它。
如果确实如此,我该如何让 Heroku 下载驱动程序?我尝试将下载链接放在 Aptfile 中,如上所示,但似乎不起作用。
我相信这可以用与类似问题相同的方法来解决设置完所有内容后,Python 无法在 Heroku 上找到 ODBC 驱动程序。
tldr:解决方案是在 Ubuntu 18.04 环境上预编译 SQL Server 的 ODBC 驱动程序 17,并通过此构建包将所需的驱动程序文件复制到 Heroku
https://github.com/matt-bertoncello/python-pyodbc-buildpack.git
。通过在 Ubuntu 16.04 环境上预编译 ODBC 驱动程序 13,可以执行相同的过程。
您找到解决这个问题的方法了吗?我在 ODBC 驱动程序 18 中遇到了同样的问题,希望您能分享任何见解。
谢谢!