我正在尝试从运行macOS 11.0.1的ARM mac连接到Microsoft SQL服务器。
我已经设置了一个带有miniconda安装的conda环境,并且在Jupyter笔记本中运行:
import pyodbc
conn = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};Server=xxx;Database=xxx;uid=xxx;pwd=xxx;')
Error: ('IM004', "[IM004] [unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed (0) (SQLDriverConnect)")
运行odbcinst -j没有明显的问题。我认为问题出在我的环境中的某个地方:
$ odbcinst -j
unixODBC 2.3.9
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
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.17.dylib
UsageCount=1
我的$PATH是:
$ tr ':' '\n' <<< "$PATH"
/opt/anaconda3/envs/analysis/bin
/opt/miniconda3/bin
/opt/anaconda3/condabin
/Users/johnmorgan/anaconda3/bin
/Users/johnmorgan/anaconda3/bin
/Users/johnmorgan/anaconda2/bin
/Users/johnmorgan/anaconda/bin
//anaconda/bin
/Users/johnmorgan/anaconda/bin
/opt/local/bin
/opt/local/sbin
/Applications/anaconda/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/opt/X11/bin
/Library/Apple/usr/bin
/Applications/Sublime Text.app/Contents/SharedSupport/bin
感谢大家的帮助。
发布于 2020-12-23 07:38:55
我已经解决了这个问题。
根据此注释,该错误通常是由于缺少资源文件造成的:https://github.com/mkleehammer/pyodbc/issues/738
根据文档:https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver15,所需的资源文件是msodbcsqlr17.rll
此文档指出资源文件应位于: /usr/local/share/msodbcsql17/resources/en_US
(也可能是相对于驱动程序文件位置的不同位置,请参阅上面的文档链接)
由于某种原因,我的资源文件丢失了。
在压缩包中有一个msodbcsqlr17.rll的副本
我将其复制到/usr/local/share/msodbcsql17/resources/en_US
问题就解决了。
https://stackoverflow.com/questions/65387490
复制相似问题