Я провел онлайн-эксперимент с пакетом shiny для R. Допустим, у меня есть 3 реактивных значения с именами "бросок", "решение" и "рейтинг".
Кроме того, я запустил базу данных MySQL на веб-службе Amazon RDS. Версия MySQL 5.6.22.
Мне удалось отправить нереактивные значения, такие как метка времени, в базу данных MySQL. Поэтому я предполагаю, что проблема заключается в том, где найти код, взаимодействующий с MySQL, в коде Server.R. Для нереактивных значений он отлично работает, когда код находится вне (до) реактивной серверной функции. Но с реактивными значениями я полагаю, что это должно быть где-то внутри.
Я попробовал этот код:
Server.R
library(shiny)
library(RMySQL)
library(DBI)
con <- dbConnect(MySQL(), dbname="db", username="myname", password="mypassword", host="myhost.com", port=xxxx)
function(input, output, session){
sql <- reactive({
paste("insert into scenario1 (toss, dec, rat, timestamp)
values (",input$toss,",",input$decision,",",input$rating,"now())")
})
result<-reactive({dbSendQuery(con, sql())})
}
Таким образом, я не получаю сообщение об ошибке. Так что, возможно, ошибка в коде insert into
.
Кроме того, я не уверен, что пакеты, которые я использовал, идеально подходят для этой цели. Я пробовал много вещей. Всякий раз, когда я добавляю реактивное значение, оставляя его вне SQL-цитаты, оно перестает работать. Я начинаю думать, что RMySQL не хватает этой функции. В мануале про insert into
ничего нет.
Кто-нибудь может обнаружить ошибку, которую я сделал?
isolate()
. - person cory   schedule 13.05.2015isolate(sql())
в свой код? Делая это, он все еще не работает. Так что я предполагаю, что это не так просто. Я хочу, чтобы этот sql запускался в конце блестящей сессии. - person schindst   schedule 15.05.2015