RStudio Shiny Ошибка mysqlNewConnection максимум 16 подключений
У меня работает блестящий сервер, который подключается к базе данных MySQL. Страница, которая до сих пор работала нормально, теперь дает мне эту ошибку:
Error in mysqlNewConnection(drv, ...) : RS-DBI driver:
(cannot allocate a new connection -- maximum of 16 connections already opened)
Что заставляет меня задуматься, как мне обращаться с открытыми соединениями mysql на интерактивной веб-странице.
Во-первых, если dbConnect(MySQL(),...)
Заявление будет перед shinyServer
метод или внутри?
Если я добавлю dbDisconnect(dbcon)
в конце server.R
тогда я получаю Error: expired MysqLConnection
ошибка со страницы, и не показывает никаких данных.
Я пытался с этим также внутри или перед shinyServer
метод:
on.exit(dbDisconnect(dbcon), add=TRUE)
или же
on.exit(dbDisconnect(dbcon))
Таким образом, код самой страницы работает только для меня, если я оставляю соединение открытым, что, как я полагаю, может привести к максимальной ошибке соединения выше.
Как справиться с этими ситуациями в Shiny?
1 ответ
Вы можете установить соединение в global.R
файл или снаружи shinyServer
Пример из https://groups.google.com/forum/:
library(RMySQL)
getConnection <- function(group) {
if (!exists('.connection', where=.GlobalEnv)) {
.connection <<- dbConnect(MySQL(), group=group)
} else if (class(try(dbGetQuery(.connection, "SELECT 1"))) == "try-error") {
dbDisconnect(.connection)
.connection <<- dbConnect(MySQL(), group=group)
}
return(.connection)
}
Это определяет функции, которые проверяют соединение в глобальной среде. Если человек не найден, он создает его. Если он найден, но не может быть подключен, то соединение будет перезапущено. Явное разъединение не дается, поэтому я полагаю, что в конце концов соединение может просто отключиться.