无法使用RSQLite连接到数据库

时间:2017-05-22 06:04:35

标签: r database sqlite

所以我试图访问我的数据库文件但没有成功,这是我的脚本:

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)中的错误:   无法连接到数据库: 无法打开数据库文件

我当然已经检查过,并确保我已正确安装了包装并确保了我的工作目录。

4 个答案:

答案 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打开文件时却无法正常工作。