RSQLite - 在/ var / tmp中创建数据库日志文件

时间:2017-07-21 15:16:31

标签: r rsqlite

我有一个sqlite数据库,我在其中创建表并每天附加新结果。这个过程是手动进入RStudio和点击运行!

我决定使用Jenkins安排我的脚本,过去5个小时我无法运行它,因为我不断收到以下错误:

Error in rsqlite_bind_rows(rs@ptr, value) : unable to open database file Calls: source ... tryCatch -> tryCatchList -> rsqlite_bind_rows -> .Call

最初认为这是权限,所以作为一个优秀的unix公民我chmod'ed我的数据库到777.同样的错误!

然后(不幸的是)发现更新包裹的兔子洞:dplyrdbplyrDBI - 阅读每个包中的所有最新更改,等等。

直到我在Rstudio文件窗口中看到dbname.sqlite3-journal闪烁。事实证明,这个文件是由sqlite为临时表和索引创建的。

显然,一旦完成所有事务并从DB断开连接,此文件就会消失。

显然Jenkins没有权限修改此文件。

一个解决方法是完全写入目录,这正是我目前正在做的并且正在工作。

但是我想知道是否有办法将此文件发送到/var/tmp?不热衷于777战略。

类似的东西:

con <- DBI::dbConnect(RSQLite::SQLite(), db, create = F, journal='/var/tmp')

1 个答案:

答案 0 :(得分:1)

temp_store_directory pragma可能有所帮助。建立连接后运行此命令:

dbExecute(con, "PRAGMA temp_store_directory = '/var/tmp'")

并检查它是否适用于您的Jenkins安装。