为什么我在postgresqlQuickSQL中收到此错误信息:警告

时间:2018-05-24 11:15:37

标签: r postgresql shiny pool r-dbi

我正在使用包pool创建一个Shiny-app,它建立了与PostgreSQL-DB的连接。我不时会在没有应用程序运行的情况下获得错误信息。此外,当我在本地运行代码时,会出现相同的错误,有时会重复出现。

  

postgresqlQuickSQL中的警告(conn,statement,...):不能   在postgresqlExecStatement中创建执行:SELECT 1错误(conn,   声明,...):RS-DBI驱动程序:(无法运行语句:否   连接到服务器)

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

无论如何,在我的代码中没有任何地方我正在制作一个内部有SELECT 1的SQL查询。

  • 查询是否来自池本身(validateQuery())?
  • 如何防止此错误?

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

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

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

  • 为什么?
  • 如何找出导致坠机的原因?

1 个答案:

答案 0 :(得分:3)

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

<强> global.R

pool <- dbPool(...)

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