SQL 任何地方 linux odbc SQL_HANDLE_HENV 错误

SQL Anywhere linux odbc SQL_HANDLE_HENV error

我有一个 linux 服务器 运行 RStudio,我正在尝试连接到一个 SQL Anywhere 数据库。

我已经安装并配置了驱动程序,我可以使用 iSQL 进行连接。尝试通过 RStudio 时,我不断收到此错误:

Error: nanodbc/nanodbc.cpp:983: 00000: [unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed 

但是,如果我直接从 /opt/bin/r/rscript 启动 R 脚本,它会连接。

尝试通过主目录中的 conda 环境连接 Python 时,同样的事情发生了。但是,如果我通过在终端中键入 "python test.py" 来启动,连接就会成功。

我在 Ubuntu 18.04 和 SQL Anywhere 17 位司机。任何想法都会得到应用。

谢谢。

我刚刚用一个非常相似的设置解决了这个问题:连接到 SQL Anywhere 数据库,当从命令行启动时,连接从 R 工作,而不是从 RStudio 工作,并给出错误:

SQLAllocHandle on SQL_HANDLE_HENV failed

关键是在 RStudio 中设置环境变量以匹配我的常规 shell 中的环境变量。就我而言,这些是 $ODBCINI$LD_LIBRARY_PATH。我按如下方式重置它们:

  1. 在shell中,运行下面获取控制台R正在使用的值

    echo $ODBCINI
    echo $LD_LIBRARY_PATH
    
  2. 在 RStudio 中,运行 Sys.getenv() 确认这些值不同。

  3. 重置变量以匹配

    Sys.setenv(ODBCINI = "[path from shell]/odbc.ini")
    Sys.setenv("LD_LIBRARY_PATH" = paste0(Sys.getenv("LD_LIBRARY_PATH"),":[user path from shell]"))
    

通过此设置,我能够从 RStudio 进行连接。