r - 为什么我会收到此错误消息:postgresqlQuickSQL 中的警告
问题描述
我正在将包pool
用于 Shiny-app,它建立了与我的 PostgreSQL-DB 的连接。在没有运行应用程序的情况下,我有时会收到以下错误消息。此外,当我在本地运行代码时,会出现相同的错误,有时还会重复出现。
postgresqlQuickSQL(conn,statement,...)中的警告:无法创建执行:SELECT 1 postgresqlExecStatement(conn,statement,...)中的错误:RS-DBI驱动程序:(无法运行语句:没有连接到服务器)
是因为池创建了与数据库的连接,并且在一段时间后数据库(或服务器)由于超时而断开连接?
无论如何,在我的代码中,我没有在SELECT 1
里面做一个 SQL 查询。
- 查询是否来自池本身(The
validateQuery()
)? - 我怎样才能防止这个错误?
在我的 ShinyApp 中,我还有以下代码在应用程序关闭后结束池连接:
session$onSessionEnded(function() {
pool::poolClose(pool)
})
此外,在运行 ShinyApp 时,该应用程序运行良好且行为符合预期。但是当我关闭应用程序时,RStudio 经常崩溃,我必须重新打开它并重新加载项目。
- 这是为什么?
- 如何找出导致崩溃的原因?
解决方案
除了 CRUD 之外,您不想对pool
内部 server.R 做任何事情。您应该只在 global.R 中创建/销毁池。换句话说,池在应用程序启动时创建一次,并在所有用户的会话之间共享。它仅在不再需要时关闭,即应用程序关闭时。
全局.R
pool <- dbPool(...)
onStop(function() {
poolClose(pool)
})
推荐阅读
- python - 在 Python 3.8.3 中获取“TypeError:'Series' 对象是可变的,因此它们不能被散列”
- javascript - 根据 jquery 中的鼠标点击次数显示弹出窗口
- android - 在 android studio 上运行 sdk
- python - 在函数中导入模块的开销有多大?
- youtube - YouTube 阻止视频在网站上显示
- mysql - 如何将现有的mysql数据latin1编码为utf8_general_ci
- javascript - 为什么对象的键只是第一个字符?
- c# - 时间:2019-05-10 标签:c#constructorchaining/defaultconstructor
- for-loop - for循环中goroutines的奇怪行为
- python - 当用户进入特定语音频道时更改 discord.py Bot 的状态