无法打开 lib '/usr/local/lib/libmsodbcsql.13.dylib' :找不到文件 - 但文件存在



我正试图在macOS 10.15.4下使用pyodbc和unixODBC从Jupyter笔记本连接到MSSQL服务器。我刚刚将OSX升级到Catalina,我以前的工作配置已经坏了。

我尝试连接:

pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};Server=xxx;Database=xxx;uid=xxx;pwd=xxx;')

它抛出一个错误:

Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libmsodbcsql.13.dylib' : file not found (0) (SQLDriverConnect)")

但是这个文件存在,并且由obdcinst.ini中的驱动程序指向,并且链接似乎是正确的。

为了追踪这一点,我运行:

$ odbcinst -j
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /Users/johnmorgan/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

驱动程序文件存在,如下所示:

$ more /etc/odbcinst.ini
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.13.dylib
UsageCount=1

指示的驱动程序是符号链接-这是错误中的"找不到文件"文件:

$ ls -al /usr/local/lib/libmsodbcsql.13.dylib
lrwxr-xr-x  1 johnmorgan  admin  54 Apr 15 08:13 /usr/local/lib/libmsodbcsql.13.dylib -> ../Cellar/msodbcsql/13.1.9.2/lib/libmsodbcsql.13.dylib

符号链接指向实际的库文件:

$ ls -al /usr/local/Cellar/msodbcsql/13.1.9.2/lib/libmsodbcsql.13.dylib
-r--r--r--  1 johnmorgan  admin  2456360 Jan 29  2018 /usr/local/Cellar/msodbcsql/13.1.9.2/lib/libmsodbcsql.13.dylib

据我所知,所有的驱动程序、文件和链接都是正确的。

那么,为什么我会出现"找不到文件"错误,我该如何修复?

我知道其他人也有这个问题,例如不能打开lib"ODBC Driver 13 for SQL Server"?Sym链接问题?,但这并没有帮助我解决问题。

我遇到了同样的问题。我试图找到dylab文件,然后转到/usr/local/lib/,但没有找到该文件。所以我在Finder中搜索了libmsodbcsql.13.dylib,幸运的是,在中找到了它

/opt/homebrew/Cellar/msodbcsql/13.1.9.2/lib/

我的下一个操作是更改我在中找到的odbcinst.ini文件中的目录

/opt/homebrew/etc/odbcinst.ini

即使更新了.ini文件中的正确目录,我的项目仍然显示file not found

接下来我安装了msodbcsql 17:

HOMEBREW_NO_ENV_FILTERING=1 ACCEPT_EULA=Y
brew install msodbcsql17 mssql-tools

奇怪的是,它在安装msodbcsql 17之后就工作了。我检查了.ini文件,它被更新了,包括新的msodbcsql 17和里面完整的msodbcsql 13

最新更新