Это меня озадачило.Я использую 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 были успешными.