6

Rの光沢のあるパッケージを使用してオンライン実験を作成しました。 「toss」、「decision」 、および「rating」と呼ばれる3 つの反応値があるとします。 さらに、Amazon Web サービス 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 クォートから外してリアクティブ値を追加すると、動作が停止します。RMySQL にはその機能が欠けていると思い始めています。insert intoマニュアルには何もありません。

誰かが私が犯した間違いを検出できますか?

4

2 に答える 2

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())")

これにより、クエリが実行されるはずです。この種の (非常に一般的な誰もが作成する) 連結ミスを防ぐ準備済みステートメントを調べてください。

于 2015-07-19T19:43:36.260 に答える