Ho creato un esperimento in linea con la lucida pacchetto per R. Diciamo che ho 3 valori reattivi chiamati "toss", "decisione" e "rating".
Inoltre, ho lanciato un database MySQL sul servizio Web Amazon RDS. La versione è MySQL 5.6.22.
Sono riuscito a inviare valori non reattivi, come il timestamp, al database MySQL. Quindi presumo che il problema è dove trovare il codice che parla con MySQL all'interno del codice Server.R. Per i valori non reattivi funziona perfettamente quando il codice è al di fuori (prima) della funzione server reattivo. Ma con valori reattivi suppongo che dovrebbe essere da qualche parte all'interno.
Ho provato questo codice:Come inserire valori di input reattivi da un'app lucida in un database MySQL?
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())})
}
In questo modo, non si ottiene un messaggio di errore. Quindi forse l'errore è all'interno del codice insert into
.
Inoltre, non sono sicuro se i pacchetti che ho usato siano ideali per questo scopo. Ho provato un sacco di cose. Ogni volta che aggiungo un valore reattivo lasciandolo fuori dall'offerta SQL smette di funzionare. Sto iniziando a pensare che RMySQL manchi quella funzione. Non c'è nulla di insert into
nel manuale.
Qualcuno è in grado di rilevare l'errore che ho fatto?
Quando si desidera eseguire sql? Penso che avrai bisogno di avvolgere il tuo dbSendQuery in un 'isolare()'. – cory
@cory Grazie per il suggerimento. Dovrei semplicemente aggiungere 'isolate (sql())' al mio codice? In questo modo non funziona ancora. Quindi presumo che non sia così semplice. Voglio che sql venga eseguito alla fine della sessione brillante. – schindst