我目前正在开发一个闪亮的应用程序,部分基于Niels货车der Velden的this教程。我遇到了以下代码块的问题:
observeEvent(input$submit_edit, priority = 20, {
SQL_df <- dbReadTable(pool, "responses_df")row_selection <- SQL_df[input$responses_table_row_last_clicked, "row_id"]dbExecute(pool, sprintf('UPDATE "responses_df" SET "name" = ?, "sex" = ?, "age" = ?,"comment" = ? WHERE "row_id" = ("%s")', row_selection),param = list(input$name,input$sex,input$age,input$comment))removeModal()
})
该代码应该执行一个SQL查询,该查询更新数据库以反映对话框中所做的更改。当与RSQLite一起使用时,这段代码工作得很好。但是,当使用RPostgres时,我收到以下错误:
Warning: Error in : Failed to prepare query: ERROR: syntax error at or near ","
LINE 1: UPDATE "responses_df" SET "name" = ?, "sex" = ?, "age" = ...
^
我试过更换?parameters与$ ones,希望这是一个简单的语法差异,但这会导致以下错误:
Warning: Error in : Failed to prepare query: ERROR: syntax error at or near "$"
LINE 1: UPDATE "responses_df" SET "name" = $, "sex" = $, "age" = ...
^
**编辑:**为了保持一致性,修改了名称。
1条答案
按热度按时间zz2j4svz1#
好吧,经过几个小时的反复试验,我终于意识到需要做出的调整:
1.将代码中的?更改为SEQUENTIAL $(等等)(“name”=?“性”=?变成“name”= $1和“sex”= $2
1.删除WHERE“row_id”中的双等号,只使用一个=。
1.将%s周围的双引号更改为单引号并删除括号。注意:您必须使用\转义符才能完成此操作。
我在下面包含了正确的代码:observeEvent(input$submit_edit,priority = 20,{
实际上,这只是语法不同的问题。似乎Postgres只是不同的足以惹恼我。这是有道理的,因为我一开始就不太喜欢SQL。尽管如此,我希望这对其他可能处理这个问题的人有所帮助。