我使用闪亮包为R创建了一个在线实验。假设我有3个无效值,称为 &#34 ;折腾","决定" 和" 评级" 。
另外,我在亚马逊网络服务RDS上推出了一个 MySQL 数据库。版本为 MySQL 5.6.22 。
我成功地设法将非反应值(如时间戳)发送到MySQL数据库。所以我假设问题是在Server.R代码中找到与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())})
}
这样,我没有收到错误消息。所以错误可能在insert into
- 代码中。
另外,我不确定我使用的包装是否适用于此目的。我尝试了很多东西。每当我通过将其保留在SQL-quote之外来添加一个无效值时它就会停止工作。我开始认为RMySQL缺少这个功能。手册中没有关于insert into
的内容。
有人能够发现我犯的错误吗?
答案 0 :(得分:1)
最后,我可以使用以下代码运行查询:
paste
我无法运行sprintf
查询。使用isolate()
可以减少与逗号的混淆。
而且,是的,我确实必须添加observe()
。我将其插入observe({
if (input$condition==1){
isolate({
writingMarks(input)
})
}
return()
})
。所以它看起来像这样:
presentingViewController
答案 1 :(得分:0)
您遇到问题:
paste("insert into scenario1 (toss, dec, rat, timestamp)
values (",input$toss,",",input$decision,",",input$rating,"now())")
问题是:不,在此之前():
paste("insert into scenario1 (toss, dec, rat, timestamp)
values (",input$toss,",",input$decision,",",input$rating,",now())")
这应该使查询运行。查看准备好的语句,这将防止这种(非常常见的每个人都使它们)连接错误。