来自 Shiny 应用程序的 `DBI::dbGetQuery` 运行 问题

Issue with `DBI::dbGetQuery` run from a Shiny app

我有一个闪亮的应用程序,用户 select 在 SQL 数据库中使用 table,然后 select 使用此 table 的某些列.然后应用程序运行此函数以获取 table:

selectAllGetQuery <- function(conn, columns, table){
  columns <- toString(sprintf("[%s]", columns))
  query <- sprintf("select %s from %s", columns, table)
  print(columns) # ok
  print(query) # ok
  dbGetQuery(conn, query)
}

一个 table 有一个名为 ACT_TEMP_°C_ 的列。当我 select 它时,dbGetQuery 语句失败: 无效列名 'ACT_TEMP_°C_'。但是,如您所见,我在函数中包含了 print(columns)print(query),并且这些语句在 R 控制台中正确打印了 ACT_TEMP_°C_。所以我真的迷路了。该函数收到正确的名称,但名称在 dbGetQuery.

中更改为错误的名称

解决了

dbGetQuery(conn, stringi::stri_enc_tonative(query))