R - 访问数据库时处理错误
R - handle error when accessing a database
我正在尝试使用 RJDBC
使用 for 循环自动从数据库下载数据。我使用的数据库每 10 分钟后自动关闭连接,所以我想做的是以某种方式捕获错误,重新建立连接,然后继续循环。为了做到这一点,我需要以某种方式捕获错误,问题是,它不是 r 错误,所以 none 命令 trycatch
和类似的作品。我刚刚在控制台上收到一条文本,告诉我:
Error in .jcheck() : No running JVM detected. Maybe .jinit() would help.
我如何处理这个问题:
if (output == ERROR) {remake connection and run dbQuery} else {run dbQuery}
感谢您的帮助
您可以使用 pool
包 to 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... ")
我正在尝试使用 RJDBC
使用 for 循环自动从数据库下载数据。我使用的数据库每 10 分钟后自动关闭连接,所以我想做的是以某种方式捕获错误,重新建立连接,然后继续循环。为了做到这一点,我需要以某种方式捕获错误,问题是,它不是 r 错误,所以 none 命令 trycatch
和类似的作品。我刚刚在控制台上收到一条文本,告诉我:
Error in .jcheck() : No running JVM detected. Maybe .jinit() would help.
我如何处理这个问题:
if (output == ERROR) {remake connection and run dbQuery} else {run dbQuery}
感谢您的帮助
您可以使用 pool
包 to 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... ")