我有一个 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 公民,我将我的 db 修改为 777。同样的错误!
然后(不幸的是)掉进了更新包的兔子洞:dplyr
,,dbplyr
-DBI
阅读每个包中的所有最新更改,等等。不是幸运......
直到我dbname.sqlite3-journal
在 Rstudio 文件窗口中看到一个闪烁。事实证明,这个文件是由 sqlite 为临时表和索引创建的。
显然,一旦所有事务完成并与数据库断开连接,该文件就会消失。
显然詹金斯没有修改这个文件的权限。
一种解决方法是完全写入目录,这是我目前正在做的并且正在工作的目录。
但我想知道是否有办法将这个文件发送到/var/tmp
?不热衷777战略。
就像是:
con <- DBI::dbConnect(RSQLite::SQLite(), db, create = F, journal='/var/tmp')