【问题标题】:SQL Anywhere linux odbc SQL_HANDLE_HENV errorSQL Anywhere linux odbc SQL_HANDLE_HENV 错误
【发布时间】:2020-07-16 04:23:35
【问题描述】:

我有一个运行 RStudio 的 linux 服务器,我正在尝试连接到 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”来启动,则连接成功。

我使用的是带有 SQL Anywhere 17 驱动程序的 Ubuntu 18.04。任何想法都会被采纳。

谢谢。

【问题讨论】:

  • @我也有同样的问题 :-(
  • 您找到解决方案了吗?

标签: r sybase sqlanywhere


【解决方案1】:

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

SQL_HANDLE_HENV 上的 SQLAllocHandle 失败

关键是在 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 进行连接。

【讨论】:

    猜你喜欢
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多