代码之家  ›  专栏  ›  技术社区  ›  SeGa

为什么我在PostgresqlQuicksql中得到这个错误msg:warning

  •  1
  • SeGa  · 技术社区  · 8 年前

    我在用包裹 pool 对于一个闪亮的应用程序,它建立了与我的PostgreSQL数据库的连接。不运行应用程序时,我会不时收到下面的错误消息。另外,当我在本地运行代码时,同样的错误会出现,有时会重复出现。

    PostgresqlQuicksql(conn,statement,…)中的警告:无法 创建执行:在Postgresqlexecstatement(conn, 语句,…):rs-dbi驱动程序:(无法运行语句:否 连接到服务器)

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

    总之,在我的代码中,我所做的SQL查询 SELECT 1 在里面。

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

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

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

    此外,在运行Shinyapp时,该应用程序工作正常,并按预期运行。但当我关闭应用程序时, rstudio经常崩溃 我必须重新打开它并重新加载项目。

    • 为什么?
    • 我怎么才能知道撞车是什么原因?
    1 回复  |  直到 8 年前
        1
  •  3
  •   Devin    8 年前

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

    全球R

    pool <- dbPool(...)
    
    onStop(function() {
      poolClose(pool)
    })