如何在R中干净地与MySQL断开连接?

时间:2013-01-25 19:18:51

标签: mysql r

此功能未正确关闭连接(因此我达到最大限制16,显然不是很好):

query.test = function(query) {
  con = dbConnect(MySQL(), groups = 'test')
  output = tryCatch({
    dbGetQuery(con, query)
    }, warning = function(w) {
      print(w)
    }, error = function(e) {
      print(e)
    }, finally  = function() {
      dbDisconnect(con)
    })
  return(output)
}

我认为finally子句中的语句总是被执行,所以我不清楚为什么这段代码不起作用。

1 个答案:

答案 0 :(得分:3)

对于R语法,答案结果有点奇怪:

query.test = function(query) {
  output = tryCatch({
    con = dbConnect(MySQL(), groups = 'test')
    dbGetQuery(con, query)
    }, warning = function(w) {
      print("warning!")
    }, error = function(e) {
      print("error encountered!")
      print(e)
    }, finally = {
      dbDisconnect(con)
      print("goodbye")
    })  
  return(output)
}

这里的区别是:

}, finally  = function() {
      dbDisconnect(con)
    })

应该是

}, finally  = {
      dbDisconnect(con)
    })

如果有人了解为什么finally不能以第一种方式运作,我会很感激听到它。