可以从 R 打开 accdb 数据库(MS Access),现在我不能

Posted

技术标签:

【中文标题】可以从 R 打开 accdb 数据库(MS Access),现在我不能【英文标题】:Could open accdb database (MS Access) from R and now I can't 【发布时间】:2016-11-02 15:47:13 【问题描述】:

我有一段 R 代码在几天前运行良好,现在突然之间,它可以在某些 PC 上运行,而在其他 PC 上却不行。有人知道 MS 是否推送了任何可能导致问题的更新?

我在所有 PC 上运行 R-32bit,而那些不工作的似乎已将 MS Access 2010 升级到 2016。

这是我的代码:

library(RODBC)
testdb <- file.path("foo.accdb")
channel <- odbcConnectAccess2007(testdb)
tables_list=grep("foo_table", sqlTables(channel)[,3], value=TRUE) # list of tables with matching names   
odbcCloseAll()

我得到的错误信息是:

sqlTables(channel) 中的错误:第一个参数不是开放的 RODBC 频道

另外:警告消息:1:在 odbcDriverConnect(con, ...) 中: [RODBC] 错误:状态 IM002,代码 0,消息 [Microsoft][ODBC 驱动程序 Manager] 未找到数据源名称且未指定默认驱动程序 2: 在 odbcDriverConnect(con, ...) 中:ODBC 连接失败

【问题讨论】:

您是说所有有问题的 PC 都可以访问同一个 Access 数据库吗?那么它被存储在某种网络驱动器上?并且您确定所有这些不同的用户帐户都被授予访问数据库的权限? 看起来像是 ODBC 连接错误。测试与 Access 数据库的 ODBC 连接。这实际上可能是路径错误(映射的驱动器可能不再可用)。 @Hack-R 不,文件被复制到每台 PC 中。 @SunKnight0 我检查了 R 是否可以找到该文件。而且 accdb 在 PC 本身中,而不是共享驱动器中。 您收到 ODBC 错误,这意味着 R 不是直接查找文件,而是查找 ODBC 数据源,而后者又查找文件本身。因此,R 正在寻找的 ODBC 数据源要么不存在,要么本身无​​法找到 Access 文件。您是否使用静态 ODBC 数据源?如果是,它是 32 位还是 64 位?它是否成功通过连接测试? R 代码本身很可能完全没有问题。 【参考方案1】:

谜团解开了!显然,升级到 MS Access 2016 删除了 ODBC 的 32 位驱动程序。重新安装 Microsoft Access Database Engine 2010 32 位后,一切都恢复正常了。

感谢大家的帮助!

【讨论】:

以上是关于可以从 R 打开 accdb 数据库(MS Access),现在我不能的主要内容,如果未能解决你的问题,请参考以下文章

MS Access/accdb“无法打开数据库”错误(C#)

MS Access 应用程序需要登录用户/密码

MS Access .accdb 文件为其他打开,但给了我“无法识别的数据库格式”

如何在 MS Access 2010 中将 ACCDB 转换为 MDB

ms 访问 accdb 到 accdr 转换

在 MS Access 中将宏从 .accdb 保留到 .mdb