【问题标题】:Getting this error "first argument is not an open RODBC channel"收到此错误“第一个参数不是开放的 RODBC 通道”
【发布时间】:2017-10-26 22:30:26
【问题描述】:

我已通过 ODBC 将 R 连接到 SQL。我已经完成了获取数据库的操作,还对其进行了升序排序并分配给“Resolution1”,但是现在当我尝试保存它时,出现了一个错误:

第一个参数不是开放的 RODBC 通道

我的代码如下所示:

library(RODBC)
channel<-odbcConnect("RSD")
sqlt<-sqlFetch(channel, "Resolution")
view(sqlt)
Resolution1<-(sqlQuery(channel, "select * from Resolution order by WLCODE,YEAR_OBS ASC"))
View(Resolution1)
sqlSave(Resolution1)

【问题讨论】:

  • 我发现当我使用 mysql 驱动程序时,我必须关闭它并为每个 sql 调用打开它。尝试在第二次调用之前再次关闭和打开驱动程序。

标签: sql r odbc


【解决方案1】:

我经常遇到同样的问题(使用 ODBC)。

我已经创建了这个函数

connexion_bdd_txt <- paste0('driver={ODBC Driver 11 for SQL Server};bla bla;')
react <- reactiveValues(connexion_bdd = NULL)

shinyServer(function(input, output,session) { 

  connexion_courante  <- function () {

      tryCatch(
      {
          odbcGetInfo(react$connexion_bdd)
      },
        error=function(e) {    
          print("connection lost, reconnection (E)")
          react$connexion_bdd<-odbcDriverConnect(connexion_bdd_txt )
        },
        warning=function(w) {  print("connection lost (W)")
        }
      )

      return(react$connexion_bdd)

  }
  ...
  Resolution1<-(sqlQuery(connexion_courante(), "select * from Resolution order by WLCODE,YEAR_OBS ASC"))

但我还没有找到防止断开连接的方法。

【讨论】:

    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多