Блестящее подключение приложения к базе данных MySQL

#r #shiny #shiny-server #rmysql

#r #блестящий #shiny-сервер #rmysql

Вопрос:

У меня возникли некоторые проблемы с публикацией этого блестящего приложения. На мой вопрос я не думаю, что пользовательский интерфейс.R имеет значение. Вот server.R:

 library(shiny)
library(RMySQL)
library(tidyverse)
library(colorspace)
library(ggplot2)

###     CONNECT AND QUERY THE DATABASE

### uncomment the next line to reconnect to server amp; re-query the database

source("http://www.mvabl.com/Dashrock/MySQL_connect_query.R")

con <- dbConnect(MySQL(),
    user = 'shiny_apps',
    password = '####',
    host = 'mysql.mvabl.com',
    dbname='sandbox191')

qmain <- dbSendQuery(con, "SELECT * FROM sizes;")

sizes <- as.data.frame(dbFetch(qmain,n=-1),na.rm=TRUE)

###     GENERATE GGPLOT

colors17 <- c("#9D8FAC","#8E96B0","#7F9BB0","#71A0AD","#67A5A7","#63A89E","#64AB94","#6BAC88","#77AD7B","#85AD70","#94AC66","#A4AA5F","#B5A75B","#C4A35B","#D39F5F","#DF9C67","#E99872")

colors6 <- c("#9D8FAC","#6FA1AC","#66AB8F","#8EAC6A","#C1A45A","#E99872")

sizes$Size_Cat <- factor(sizes$Size_Cat,
                         levels = c("n1_4","n5_9","n10_19",
                                    "n20_49","n50_99","n100_249",
                                    "n250_499","n500_999","n1000",
                                    "n1000_1","n1000_2","n1000_3",
                                    "n1000_4"))
sizes$market <- factor(sizes$market,
                         levels = c("NYC","LA","CHI","DC","SF","BOS"))
sizes <- sizes %>%
  filter(market %in% c("NYC","SF"),
         Size_Cat %in% c("n50_99","n100_249","n250_499"))

shinyServer(function(input, output) {

  output$plot <- renderPlot({

    g <- ggplot(sizes)
    g   geom_bar(stat = "identity",
                 position = "dodge",
                 aes_string(x=input$x, y=input$y))
    if (input$color != 'None')
    g <- g   aes_string(color=input$color)

    facets <- paste(input$facet_row, '~', input$facet_col)
    if (facets != '. ~ .')
      g <- g   facet_grid(facets)

      g <- g   scale_fill_manual (values=colors17)
      g <- g   facet_wrap(~ input$facet_row)
      g <- g   labs( y = "Number of Companies", title = "Market Structure")
      g <- g   theme(strip.text.x = element_text(size = 8),
            axis.text.x  = element_text(angle=90, size=6)) 

    if (input$jitter)
      g <- g   geom_jitter()
    if (input$smooth)
      g <- g   geom_smooth()

    print(g)

  }, height=700)

})    
dbHasCompleted(qmain)
dbClearResult(qmain)
dbDisconnect(con)
  

Результат, который я получаю, — «Размеры объекта не найдены»

Дело в том, что когда я запускаю точно такой же код локально, но без блестящей части, я получаю ожидаемый результат. Вот этот код:

 library(RNeo4j)
library(tidyverse)
library(stringr)
library(MASS)
library(RColorBrewer)
library(colorspace)

### uncomment the next 2 lines to reconnect to server amp; re-query the database
 setwd("~/Desktop/Dashrock/")
 source("http://www.mvabl.com/Dashrock/MySQL_connect_query.R")

colors17 <- c("#9D8FAC","#8E96B0","#7F9BB0","#71A0AD","#67A5A7","#63A89E","#64AB94","#6BAC88","#77AD7B","#85AD70","#94AC66","#A4AA5F","#B5A75B","#C4A35B","#D39F5F","#DF9C67","#E99872")

colors6 <- c("#9D8FAC","#6FA1AC","#66AB8F","#8EAC6A","#C1A45A","#E99872")

sizes$Size_Cat <- factor(sizes$Size_Cat,
                         levels = c("n1_4","n5_9","n10_19",
                                    "n20_49","n50_99","n100_249",
                                    "n250_499","n500_999","n1000",
                                    "n1000_1","n1000_2","n1000_3",
                                    "n1000_4"))
sizes$market <- factor(sizes$market,
                         levels = c("NYC","LA","CHI","DC","SF","BOS"))
sizes <- sizes %>%
  filter(market %in% c("NYC","SF"),
         Size_Cat %in% c("n50_99","n100_249","n250_499"))

g <- ggplot(sizes)
      g   geom_bar(stat = "identity",
                   position = "dodge",
             aes(x = market, 
                 y = firms,
                 fill = industry),
             color = "grey")  
        scale_fill_manual (values=colors17)  
        facet_wrap(~ Size_Cat)  
        labs( y = "Number of Companies", title = "Market Structure")   
        theme(strip.text.x = element_text(size = 8),
              axis.text.x  = element_text(angle=90, size=6))
  

Исходный файл «connection» доступен для публичного просмотра в Интернете по адресу http://www.mvabl.com/Dashrock/MySQL_connect_query.R (точно такой же URL-адрес из приведенных выше блоков кода), но я хэшировал PW, так что это не исполняемый файл. (Я не знаю, как замаскировать пароль для доступа кода к моей БД.)

Наконец, в обоих моих сторонних клиентах MySQL (Sequel Pro и MySQL Workbench) sizes таблица отображается без проблем.

Кто-нибудь может определить проблему? Или, что еще лучше, скажите мне, как я могу сам это диагностировать?

Спасибо

Комментарии:

1. Отображается ли в сообщении об ошибке, в какой строке произошла ошибка?

2. Нет. Он просто открывается на вкладке браузера с этим сообщением об ошибке. А в RStudio вообще нет информации об ошибках. Я попытался добавить строку test1 <- "PASSED" в разных местах, чтобы посмотреть, смогу ли я найти, где произошел сбой кода. (Я не знаю никаких функций трассировки ошибок в R). Это не помогло.

3. Посмотрите, если это shiny.rstudio.com/articles/debugging.html помогает. Также, вероятно, будет полезно, если вы опубликуете код пользовательского интерфейса

Ответ №1:

У меня было что-то подобное раньше. Попробуйте заменить

 g <- ggplot(sizes)
  

с

 g <- ggplot(sizes())
  

Комментарии:

1. Спасибо! Это сработало. Я никогда, никогда бы не подумал об этом.