【发布时间】:2016-09-05 21:38:47
【问题描述】:
我正在使用 32 位 R 和 RStudio 来尝试连接到 .accdb 文件。我的机器上运行着 32 位 MS Access。
R 版本:
platform i386-w64-mingw32
arch i386
os mingw32
system i386, mingw32
status
major 3
minor 1.2
...
language R
version.string R version 3.1.2 (2014-10-31)
nickname Pumpkin Helmet
我正在尝试使用 RODBC 包连接到 MS Access 数据库。我无法使用odbcConnectAccess("location_of_database.accdb") 连接到客户端提供的数据库。这个特定的数据库是使用 Access 2013 创建的。当我尝试连接时,我收到了各种警告消息:
Warning messages:
1: In odbcDriverConnect(con, ...) :
[RODBC] ERROR: state HY000, code -1028, message [Microsoft][ODBC Microsoft Access Driver] Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt.
2: closing unused RODBC handle 12
3: In odbcDriverConnect(con, ...) :
[RODBC] ERROR: state 01000, code 1, message [Microsoft][ODBC Microsoft Access Driver]General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x11a4 Thread 0x798 DBC 0x88e0064 Jet'.
4: In odbcDriverConnect(con, ...) :
[RODBC] ERROR: state 01000, code 1, message [Microsoft][ODBC Microsoft Access Driver]General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x11a4 Thread 0x798 DBC 0x88e0064 Jet'.
5: In odbcDriverConnect(con, ...) : ODBC connection failed
有趣的是,我可以使用odbcConnectAccess2007() 成功连接到使用Access 2010 创建的数据库;但是,当我尝试使用 odbcConnectAccess() 连接到相同的数据库时,我得到了同样的错误。
Google 搜索上面的Error: state 01000, code 1 消息表明this page 可能会有所帮助,但即使按照步骤更改HKEY_LOCAL_MACHINE 也不起作用。
虽然我最初认为that this question was promising,但那里的警告消息与“ACE DSN”有关,而我看到的错误消息与“Jet DSN”有关。
我无法使用我的 Access 版本打开我尝试使用 RODBC 访问的数据库,因为这些数据库是使用 Access 2013 创建的并且我安装了 Access 2010。
谁能帮我解决为什么我不能用odbcConnectAccess() 打开这个数据库?
【问题讨论】:
-
您是否尝试过使用您的 Access_2010 副本打开 Access_2013 数据库?当你这样做时会发生什么?您是否也尝试过使用
odbcConnectAccess2007()而不是odbcConnectAccess()在 R 中打开该数据库? -
我收到一条错误消息,上面写着
"Unrecognized database format [database location.accdb]." -
您是否尝试过在 R 中使用
odbcConnectAccess2007()而不是odbcConnectAccess()打开该数据库? -
是的。我得到了与我原来的问题相同的错误。
-
Access 2007-2016 文件之间基本上没有区别,因为它们都使用相同的格式。某些 UI 功能甚至可能与表格元素不同,但 R 连接到 ACE 引擎而不是 GUI。 无法识别的数据库格式表示损坏。尝试创建一个新的 Access .accdb 并导入所有对象。