首页 > 解决方案 > 在函数内调用时数据库连接 UI 不显示

问题描述

我正在使用 RStudio Server 和 ODBC 连接到 redshift 数据库。我可以使用以下方式轻松连接:

  conn <- dbConnect(odbc::odbc(), Driver="redshift", 
                        Server = SERVER_URL,
                        Port = "5439",
                        Database = DB_NAME,
                        PWD = PASSWORD,
                        UID = CREDENTIALS,
                        timeout = 10,
                        Trusted_Connection = "True")

当连接时显示在侧边栏“连接”中,我有一个 UI 可以查看数据库。这正是我想要的。

问题是,如果我在函数中调用相同的代码,那么我会得到数据库连接但没有 UI?!?从函数内部调用此代码时,如何让 UI 出现?

C

onnection_odbc_profile <- function(INPUT){
    conn <- dbConnect(odbc::odbc(), Driver="redshift", 
                        Server = SERVER_URL,
                        Port = "5439",
                        Database = DB_NAME,
                        PWD = PASSWORD,
                        UID = CREDENTIALS,
                        timeout = 10,
                        Trusted_Connection = "True")
     return(conn)
}

我认为问题在于连接窗格仅在代码在顶层运行时才会更新。有没有办法强制函数中的一行代码在顶层(或直接在控制台中)运行

标签: rodbc

解决方案


我通过添加解决了这个问题:

code <- c(match.call())   # This saves what was typed into R
  odbc:::on_connection_opened(conn, paste(c(paste("con <-", gsub(", ", ",\n\t", code))), collapse = "\n"))  

推荐阅读