R - 访问数据库时处理错误

问题描述

我正在尝试使用 RJDBC 使用 for 循环自动数据库下载数据。我使用的数据库每 10 分钟后自动关闭连接,所以我想做的是以某种方式捕获错误,重新建立连接,然后继续循环。为了做到这一点,我需要以某种方式捕获错误,问题是,它不是 r 错误,因此没有任何命令 trycatch 和类似的工作。我只是在控制台上收到一条文字告诉我:

Error in .jcheck() : No running JVM detected. Maybe .jinit() would help.

我该如何处理:

if (output == ERROR) {remake connection and run dbQuery} else {run dbQuery}

感谢您的帮助

解决方法

您可以使用 poolto abstract away the logic of connection management
这完全符合您对 DBI 的连接管理的期望。
它应该适用于 RJDBC which is an implentation of DBI,但我没有使用这个驱动程序对其进行测试。

libray(pool)
library(RJDBC)

conn <- dbPool(
  drv = RJDBC::JDBC(...),dbname = "mydb",host = "hostadress",username = "test",password = "test"
)
on.exit(poolClose(conn))

dbGetQuery(conn,"select... ")