断开dplyr中的src_tbls连接

Ale*_*lex 11 sql r dplyr

有没有办法强制断开一个类似的src_tbls对象?dplyrRPostgreSQL::dbDisconnect

参见例如:

> src_temp <- src_postgres(dbname = "temp", host = "127.0.0.1", port = 5432, user = "x", password = "y")
Error in postgresqlNewConnection(drv, ...) : 
  RS-DBI driver: (cannot allocate a new connection -- maximum of 16 connections already opened)
Run Code Online (Sandbox Code Playgroud)

作为旁注,几秒后它会很快自动断开:

Auto-disconnecting postgres connection (3734, 26)
Run Code Online (Sandbox Code Playgroud)

之后您可以src_postgres再次运行该命令.

hrb*_*str 10

你可以做:

RPostgreSQL::dbDisconnect(src_temp$con)
Run Code Online (Sandbox Code Playgroud)

迫使断开连接.

这就是dplyr(通过dbi-s3.r源文件)从此函数调用垃圾回收的原因:

# Creates an environment that disconnects the database when it's
# garbage collected
db_disconnector <- function(con, name, quiet = FALSE) {
  reg.finalizer(environment(), function(...) {
    if (!quiet) {
      message("Auto-disconnecting ", name, " connection ",
        "(", paste(con@Id, collapse = ", "), ")")
    }
    dbDisconnect(con)
  })
  environment()
}
Run Code Online (Sandbox Code Playgroud)

  • 换句话说,你可以只是`rm()`旧的连接,它们将在下一个gc上消失. (7认同)
  • 这不会发生在我身上:在`rm(list = ls())之后`我仍然得到`postgresqlNewConnection(drv,...)中的错误:RS-DBI驱动程序:( p _ 不能分配新的连接 - - 当我尝试打开一个新的`dplyr :: src_postgres(...)`时,最多打开了16个连接. (5认同)