RSQLite - 在 /var/tmp 中创建数据库日志文件
RSQLite - Create databse journal file in /var/tmp
我有一个 sqlite 数据库,我每天在其中创建表并附加新结果。通过进入 RStudio 和 hit 运行!
手动完成此过程
我决定使用 Jenkins 安排我的脚本,但在过去的 5 个小时里我无法 运行 它,因为我不断收到以下错误:
Error in rsqlite_bind_rows(rs@ptr, value) : unable to open database file Calls: source ... tryCatch -> tryCatchList -> rsqlite_bind_rows -> .Call
最初认为这是权限问题,所以作为一个优秀的 unix 公民,我将我的数据库更改为 777。同样的错误!
然后(不幸的是)进入了更新包的兔子洞:dplyr
、dbplyr
、DBI
- 阅读每个包中的所有最新更改,等等。不是运气。 ..
直到我看到 dbname.sqlite3-journal
在 Rstudio 文件 Window 中闪烁。事实证明,这个文件是由 sqlite 为临时表和索引创建的。
显然,一旦所有事务完成并与数据库断开连接,此文件就会消失。
显然 Jenkins 没有权限修改这个文件。
一个解决方法是完全写入目录,这是我目前正在做的并且正在工作。
但我想知道是否有办法将此文件发送到 /var/tmp
?不喜欢777策略
类似于:
con <- DBI::dbConnect(RSQLite::SQLite(), db, create = F, journal='/var/tmp')
temp_store_directory
pragma 可以提供帮助。 运行 建立连接后:
dbExecute(con, "PRAGMA temp_store_directory = '/var/tmp'")
并检查它现在是否适用于您的 Jenkins 安装。
我有一个 sqlite 数据库,我每天在其中创建表并附加新结果。通过进入 RStudio 和 hit 运行!
手动完成此过程我决定使用 Jenkins 安排我的脚本,但在过去的 5 个小时里我无法 运行 它,因为我不断收到以下错误:
Error in rsqlite_bind_rows(rs@ptr, value) : unable to open database file Calls: source ... tryCatch -> tryCatchList -> rsqlite_bind_rows -> .Call
最初认为这是权限问题,所以作为一个优秀的 unix 公民,我将我的数据库更改为 777。同样的错误!
然后(不幸的是)进入了更新包的兔子洞:dplyr
、dbplyr
、DBI
- 阅读每个包中的所有最新更改,等等。不是运气。 ..
直到我看到 dbname.sqlite3-journal
在 Rstudio 文件 Window 中闪烁。事实证明,这个文件是由 sqlite 为临时表和索引创建的。
显然,一旦所有事务完成并与数据库断开连接,此文件就会消失。
显然 Jenkins 没有权限修改这个文件。
一个解决方法是完全写入目录,这是我目前正在做的并且正在工作。
但我想知道是否有办法将此文件发送到 /var/tmp
?不喜欢777策略
类似于:
con <- DBI::dbConnect(RSQLite::SQLite(), db, create = F, journal='/var/tmp')
temp_store_directory
pragma 可以提供帮助。 运行 建立连接后:
dbExecute(con, "PRAGMA temp_store_directory = '/var/tmp'")
并检查它现在是否适用于您的 Jenkins 安装。