Ошибка при попытке назначить JDBCResult для фрейма данных в R - PullRequest
0 голосов
/ 03 июня 2019

Это меня озадачило.Я использую RStudio, и мое блестящее приложение вылетает при попытке назначить JDBCResult массиву / df через dbFetch.Я сократил код до простой блестящей информационной панели и очень простого запроса.Запрос будет выполнен в клиенте oracle.Код, вызывающий проблему:

jdbcDriver =JDBC("oracle.jdbc.OracleDriver",classPath="/Rtools/ojdbc6.jar")
con=jdbcConnection =dbConnect(jdbcDriver, "jdbc:oracle:thin:@//myserver:1524/sid", "user", "pass")
myvar <- dbSendQuery(con, schema = "schema", "Select '2' from dual")
myvar_value <- dbFetch(myvar)

Если я выполню это в консоли один, он выдаст ошибку в первый раз, а затем выполнит во второй раз (что само по себе странно, но может привести к идентификацииэта проблема).

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

> runApp('app01.r')
Error in .jcall(.rJava.class.loader, "[Ljava/lang/String;", "getClassPath") : 
  java.sql.SQLException: Invalid column index
> runApp('app01.r')
Error in .jcall(res@md, "I", "getColumnCount") : 
  java.sql.SQLException: Invalid column index

Вот полный код:

library(shinydashboard)
library(shiny)
library(RJDBC)
library(DBI)

jdbcDriver =JDBC("oracle.jdbc.OracleDriver",classPath="/Rtools/ojdbc6.jar")
con=jdbcConnection =dbConnect(jdbcDriver, "jdbc:oracle:thin:@//myserver:1524/sid", "user", "pass")
myvar <- dbSendQuery(con, schema = "CMPM", "Select '2' from dual")
myvar_value <- dbFetch(myvar)

##dbClearResult(myvar)##


ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(),
  dashboardBody(
    # Boxes need to be put in a row (or column)
    fluidRow(
      box(plotOutput("plot1", height = 250)),

      box(
        title = "Controls",
        sliderInput("slider", "Number of observations:", 1, 100, 50)
      )
    )
  )
)

server <- function(input, output) {

  set.seed(122)
  histdata <- rnorm(500)

  output$plot1 <- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })
}

shinyApp(ui, server)

Цель здесь - просто получить пустышкуприложение для запуска, как тогда, я буду знать, если функции DBI были успешными.

...