为什么我收到此错误消息:Postgresql Quick SQL 中的警告

Why am I getting this error-msg: Warning in postgresqlQuickSQL

我正在为 Shiny-app 使用包 pool,它与我的 PostgreSQL-DB 建立连接。有时我会在没有应用 运行ning 的情况下收到下面的错误信息。另外当我在本地运行代码时,出现同样的错误,有时还会重复。

Warning in postgresqlQuickSQL(conn, statement, ...) : Could not create execute: SELECT 1 Error in postgresqlExecStatement(conn, statement, ...) : RS-DBI driver: (could not run statement: no connection to the server )

是否因为池创建了到数据库的连接,一段时间后数据库(或服务器)由于超时而断开连接?

无论如何,在我的代码中没有任何地方我在做一个 SQL-query,里面有 SELECT 1

在我的 ShinyApp 中,我还有以下代码来在应用程序关闭后结束池连接:

  session$onSessionEnded(function() {
    pool::poolClose(pool)
  })

此外,当 运行使用 ShinyApp 时,该应用程序运行良好且表现符合预期。但是当我关闭应用程序时,RStudio 经常崩溃,我必须重新打开它并重新加载项目。

除了 CRUD 内容之外,您不想对 server.R 中的 pool 做任何事情。您应该只 create/destroy global.R 内的游泳池。换句话说,池在应用程序启动时创建一次,并在所有用户的会话之间共享。它仅在不再需要时关闭,即应用程序关闭时。

global.R

pool <- dbPool(...)

onStop(function() {
  poolClose(pool)
})