macOS下R odbc::odbcListDrivers()无法识别odbcinst.ini注册驱动问题
解决方案
1 修复R仍报数据源未找到错误
- 优先解决RStudio环境变量不生效问题:macOS下图形化应用不会读取终端的shell环境变量,需将ODBC配置路径写入R的全局启动配置:
打开~/.Renviron文件(不存在则新建),添加如下内容:
保存后重启RStudio,再执行ODBCSYSINI=/opt/homebrew/etcodbc::odbcListDrivers()即可正常识别驱动。 - 重新编译安装odbc包:CRAN预编译的odbc包可能自带内置的unixODBC库,不会读取系统的odbc配置,执行以下命令从源码编译安装:
install.packages("odbc", type = "source") - 临时规避方案(跳过DSN配置):直接在R中写完整连接字符串,无需依赖odbc.ini配置:
library(DBI) conn <- dbConnect(odbc::odbc(), Driver = "ODBC Driver 17 for SQL Server", Server = "servername.net,1433", Database = "databasename", UID = rstudioapi::askForPassword("Database user"), PWD = rstudioapi::askForPassword("Database password") )
2 修复OpenSSL加载错误
msodbcsql17仅兼容OpenSSL 1.0/1.1版本,macOS新版默认预装OpenSSL 3.x会触发该报错,执行以下操作修复:
- 安装OpenSSL 1.1版本:
brew install openssl@1.1 - 将OpenSSL 1.1的库路径加入系统动态库查找路径,打开
~/.zshrc(使用bash则打开~/.bashrc),添加如下内容:
如果使用Intel架构的Mac,将路径替换为export DYLD_LIBRARY_PATH="/opt/homebrew/opt/openssl@1.1/lib:$DYLD_LIBRARY_PATH"/usr/local/opt/openssl@1.1/lib
执行source ~/.zshrc生效后,再测试isql -v SQLServer myusername mypassword即可正常连接。
3 补充配置修正
你之前的odbc.ini配置存在语法错误:odbc.ini是系统级ODBC配置文件,无法识别R函数,需删除UserName和Password两行配置,连接时在R代码或isql命令中传入账号密码即可,避免配置冲突。
内容的提问来源于stack exchange,提问作者gconte
相关产品推荐
相关产品推荐

