Shinyapps 上的 RODBC。连接到 Access 数据库 (.mdb) 时出错

Posted

技术标签:

【中文标题】Shinyapps 上的 RODBC。连接到 Access 数据库 (.mdb) 时出错【英文标题】:RODBC on shinyapps. Error connecting to Access database (.mdb) 【发布时间】:2015-10-23 17:48:59 【问题描述】:

我有一个 R Shiny 脚本,可以在我的本地 Windows 计算机上正常运行,但是当我将它部署到 shinyapps.io(类似于 unix)时失败。

我最初使用的是: odbcConnectAccess('test.mdb') 但在部署时,出现以下错误:

Unhandled error in observer: could not find function "odbcConnectAccess"

我测试过,其他 RODBC 功能仍然有效。所以我尝试了这段代码(基于this post,这也恰好是 odbcConnectAccess() 的内部返回)

uid=""
pwd=""
con =paste("Driver=Microsoft Access Driver (*.mdb);Dbq=", file.path(getwd(),'test.mdb'), ";Uid=", uid, ";Pwd=", pwd, ";", sep = "")
conn=odbcDriverConnect(con)

同样,这适用于我的本地计算机,但在部署到 ShinyApps.io 时出现以下错误:

[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified

我也无意中尝试了odbcConnect(con),它给出了以下错误:

Warning in odbcDriverConnect("DSN=Driver=Microsoft Access Driver (*.mdb);Dbq=/srv/connect/apps/ALC_app_v0_1/Salvage_data_FTP.mdb;Uid=;Pwd=;") :

[RODBC] ERROR: state IM012, code 0, message [unixODBC][Driver Manager]DRIVER keyword syntax error

odbcDriverConnect() 的帮助中提到连接字符串的格式取决于您的 ODBC,Shinysapps.io 似乎使用 unixODBC,但我找不到 unixODBC 想要我使用的格式以便我可以建立连接?

谁能帮我弄清楚如何在 shinyapps.io 上打开与 .mdb 的连接?我不确定我是否能够更改 shinyapps.io 服务器上的 .ini 文件,所以我真的希望找到正确的格式/语法来建立没有 DSN 的连接。

感谢您的帮助或反馈!

【问题讨论】:

【参考方案1】:

“...我们目前仅支持 shinyapps.io 上的开源数据库,但我们正在观察是否会收到更多对专有数据库的请求。” 来自ShinyApps-User group。 2015 年 10 月 23 日

所以目前看来答案是否定的。 [更新见下文]

很抱歉回答我自己的问题,但我会留下来,因为我花了一段时间才找到确认,它可以避免其他人头疼。

[更新] “Andy 纠正了我(在度假时),并告诉我你可以使用 FreeTDS 驱动程序来完成这项工作。我不是这方面的专家,但如果你将代码更改为这样的:

odbcDriverConnect("driver=FreeTDS;Server=hostname;database=dbname;uid=username;pwd=password")

我们没有配置任何 DSN,但您可以在此处查看有关如何执行此操作的提示: Trying to connect to an ODBC server using RODBC in ubuntu"

看来这是可能的。如果我得到它的工作,我会更新。

【讨论】:

由于 MS Access Jet/ACE 是一个文件级数据库引擎,考虑一下它的开源文件级对应物 SQLite,它应该可以保持您的工作流程完好无损。它是轻量级的,资源或安装不会太重,您可以将数据库保留在单独的文件中,没有像 mysql、SQL Server、PostgreSQL、DB2、Oracle 这样的服务器级企业解决方案。

以上是关于Shinyapps 上的 RODBC。连接到 Access 数据库 (.mdb) 时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 R studio 连接到 dashDB 的 RODBC

将 Azure SQL 数据库连接到 shinyapps.io

使用 docker、rbase 和 RODBC 连接到 sql server 时出错

macOS Catalina 上的 RODBC

通过 RODBC 连接到 SQL Server 数据库

在 R 中使用 RODBC 连接到 Azure SQL