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)
}

Это определяет функции, которые проверяют соединение в глобальной среде. Если человек не найден, он создает его. Если он найден, но не может быть подключен, то соединение будет перезапущено. Явное разъединение не дается, поэтому я полагаю, что в конце концов соединение может просто отключиться.

Другие вопросы по тегам