【问题标题】:Unable to connect to ODBC through shinyapps.io无法通过 shinyapps.io 连接到 ODBC
【发布时间】:2019-02-12 18:14:06
【问题描述】:

我构建了一个闪亮的应用程序,它使用 odbc 库从托管在公共服务器中的服务器获取数据并显示结果输出。在Win10下完美运行。

我正在使用以下代码连接到服务器:

library(odbc)
con <- dbConnect(odbc(),
                 Driver = "SQL Server Native Client 11.0",
                 Server = "****",
                 Database = "****",
                 UID = "****",
                 PWD = "****")

当我在 www.shinyapps.io 中托管该应用程序时,它无法正常工作。它显示错误如下:

Warning: Error in : nanodbc/nanodbc.cpp:950: 01000: [unixODBC][Driver Manager]Can't open lib 'SQL Server Native Client 11.0' : file not found 

我不明白为什么它说“找不到文件”?当我使用 PC 上的 rstudio 运行应用程序时,该应用程序运行良好。

请帮忙。 提前致谢。

苏曼塔

【问题讨论】:

  • 错误信息非常清楚,您的计算机上安装了 SQL 服务器驱动程序,但 Shinyapps 站点上没有。如果您有 root 访问权限,请安装驱动程序并配置 odbc.ini 文件。如果您没有 root 访问权限,我建议您建立 JDBC 连接并为您的应用提供 jar 文件。
  • 您必须使用 RODBC 包,因为它安装在 shinyapp.io 服务器上。请参阅here 了解更多信息
  • @AlexanderLeow,我已将代码更新如下library(RODBC); con &lt;- odbcDriverConnect('driver={SQL Server}; server=****; database=****; Uid=****; Pwd=****; ') 它在我的电脑上运行良好,但从shinyapps 我收到以下错误:[RODBC] ERROR: state 01000, code 0, message [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found 这次我使用的是'SQL服务器的驱动程序,但没有成功。

标签: r shiny odbc


【解决方案1】:

您必须使用 FreeTDS。我发现使用的是 7.4 或 7.0 版本。

使用 odbc 试试这个:


    library(DBI)
    library(odbc)

    con <- dbConnect(
      odbc(),
      Driver      = "FreeTDS",
      Database    = database,
      Uid         = uid,
      Pwd         = pwd,
      Server      = server,
      Port        = 1433,
      TDS_Version = 7.4
    )

或者这个使用的rodbc:

    library(RODBC)

    con <- odbcDriverConnect(
      'Driver=FreeTDS;
      TDS_Version=7.4;
      Server=<server>;
      Port=<port>;
      Database=<db>;
      Uid=<uid>;
      Pwd=<pw>;
      Encrypt=yes;
      TrustServerCertificate=no;
      Connection Timeout=30;')

【讨论】:

  • 嗨,Alexander,我已经尝试了所有可能的组合,如 ODBC 和 RODBC 与 FreeTDS v7.4 和 v7.0 的建议。然而他们都没有工作。我将错误日志放在下面:shinyapps[723104]: [RODBC] ERROR: state 08001, code 0, message [unixODBC][FreeTDS][SQL Server]Unable to connect to data source shinyapps[723104]: [RODBC] ERROR: state 01000, code 20013, message [unixODBC][FreeTDS][SQL Server]Unknown host machine name. 请帮忙。
  • 错误信息有点好,因为它表明现在找到了驱动程序。问题是现在的主机,你可以尝试检查主机名和端口。
猜你喜欢
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 2016-02-21
相关资源
最近更新 更多