首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mac上的unixODBC失败,并显示"[IM004] [unixODBC][驱动程序管理器]Driver‘s SQLAllocHandle on SQL_HANDLE_HENV failed“

mac上的unixODBC失败,并显示"[IM004] [unixODBC][驱动程序管理器]Driver‘s SQLAllocHandle on SQL_HANDLE_HENV failed“
EN

Stack Overflow用户
提问于 2020-12-21 12:17:20
回答 1查看 337关注 0票数 0

我正在尝试从运行macOS 11.0.1的ARM mac连接到Microsoft SQL服务器。

我已经设置了一个带有miniconda安装的conda环境,并且在Jupyter笔记本中运行:

代码语言:javascript
运行
复制
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没有明显的问题。我认为问题出在我的环境中的某个地方:

代码语言:javascript
运行
复制
$ 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是:

代码语言:javascript
运行
复制
$ 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

感谢大家的帮助。

EN

回答 1

Stack Overflow用户

发布于 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

(也可能是相对于驱动程序文件位置的不同位置,请参阅上面的文档链接)

由于某种原因,我的资源文件丢失了。

其中包含下载链接:https://download.microsoft.com/download/1/9/A/19AF548A-6DD3-4B48-88DC-724E9ABCEB9A/msodbcsql-17.1.0.1.tar.gz

在压缩包中有一个msodbcsqlr17.rll的副本

我将其复制到/usr/local/share/msodbcsql17/resources/en_US

问题就解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65387490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档