r - 不要在 dplyr 中自动调用 db_disconnector

标签 r shiny dplyr

我在 Shiny 应用程序中使用 tbl_sql 对象来访问数据库表。我注意到有时 dplyr 会关闭此连接。这可能是因为垃圾收集器调用 db_disconnector。有什么办法可以阻止这种情况吗?我可以在 Shiny 的关闭事件上关闭连接。

最佳答案

看起来,如果你d <- src_mysql(...) (我猜这就是您正在使用的后端,以及您如何连接到数据库?)那么垃圾收集器只会在 d 时运行。超出范围。也许是数据库通过超时连接来管理负载?

测试此功能的一种方法是编写自己的不会断开连接的包装器(而不是 src_mysql() )

src_yoursql <-
    function (dbname, host = NULL, port = 0L, user = "root", password = "", 
              ...) 
{
    if (!requireNamespace("RMySQL", quietly = TRUE)) {
        stop("RMySQL package required to connect to mysql/mariadb", 
            call. = FALSE)
    }
    con <- DBI::dbConnect(RMySQL::MySQL(), dbname = dbname, host = host, 
        port = port, username = user, password = password, ...)
    info <- DBI::dbGetInfo(con)
    src_sql("mysql", con, info = info)
}

d = src_yoursql(...)

手动关闭它

DBI::dbDisconnect(d$con)

关于r - 不要在 dplyr 中自动调用 db_disconnector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29966405/

相关文章:

r - 识别两列之间的拼写错误

r - 列出 R Shiny 服务器上应用程序中的对象内存使用情况

r - Dplyr:重新编码数字和字符向量

r - 使用 dplyr distinct 忽略 R 中 sf 对象的几何形状

r - 将 y 轴范围设置为 R 中数据的 +/-10 个百分点

r - 如何使用开始日期在 R 中创建滞后的结束日期?

r - 仅在 R 中从列 Date 类中提取

R 使用 shiny、rhandson 和 DT 更改列类型

r - 是否可以停止在 Shiny 的内部执行 R 代码(不停止 Shiny 的进程)?

r - 检查两个类别中是否出现