所以我试图访问我的数据库文件但没有成功,这是我的脚本:
library(DBI)
library(sqldf)
drv <- dbDriver("SQLite")
con <- dbConnect(drv, dbname = "database.sqlite")
这是错误:
drv&lt; - dbDriver(&#34; SQLite&#34;)
con&lt; - dbConnect(drv,dbname =&#34; database.sqlite&#34;)
rsqlite_connect(dbname,loadable.extensions,flags,vfs)中的错误: 无法连接到数据库: 无法打开数据库文件
我当然已经检查过,并确保我已正确安装了包装并确保了我的工作目录。
答案 0 :(得分:3)
我可以通过两种方式复制此错误:
这可能是因为操作系统权限。检查你的权限。
如果要求SQLite打开不存在的数据库文件,它会尝试创建它。如果失败,则会收到该错误消息。如果DB文件的路径(在本例中是当前工作目录)不允许您创建文件,则会失败。检查你的权限。
请注意,如果文件确实存在但已损坏,我会收到其他错误:
> con <- dbConnect(drv, dbname = "database.sqlite")
Error in rsqlite_send_query(conn@ptr, statement) :
file is encrypted or is not a database
>
因此可能不你的问题。
答案 1 :(得分:3)
我已经解决了我的问题,而且有点尴尬:
我已将文件保存在桌面上。由于我的操作系统是以我的母语(希伯来语)安装的,因此文件路径中有一个希伯来语单词,虽然这对于将表读入R而不会造成问题,但它确实给SQL连接带来了问题。 / p>
解决它很容易 - 我已将文件保存在我的硬盘驱动器上的新文件夹(c:\ database)中,设置为工作目录,一切正常。
答案 2 :(得分:1)
我也有这个问题。我仔细检查了路径并发现了那里的错误。一旦我提供了正确的路径,连接就起作用了。
感谢这篇文章。它提请我注意仔细检查路径是否正确。
答案 3 :(得分:0)
我遇到了类似的问题,解决方案是在发出dbConnect
时使用正斜杠。我有一个定义为“ C:\ ...”的工作目录,该代码在其余代码中均能正常工作,但在尝试使用dbConnect
打开文件时却无法正常工作。