2015-04-06 124 views
6

我正在試驗RMySQL,並意外創建了一個沒有句柄的連接。RMySQL:關閉沒有句柄的連接

dbConnect(MySQL(), user = "foo", password = "bar") 
connLocalDB = dbConnect(MySQL(), user = "foo", password = "bar") 

請注意,第一個調用的返回沒有分配給任何東西。現在,當我做了dbListConnections(MySQL())我看到兩個連接:

> dbListConnections(MySQL()) 
[[1]] 
<MySQLConnection:0,0> 

[[2]] 
<MySQLConnection:0,1> 

然後我嘗試這樣做:

> dbDisconnect(dbListConnections(MySQL())[[1]]) 
[1] TRUE 

,但後來,我得到這個:

> dbListConnections(MySQL()) 
[[1]] 
Error in .local(dbObj, ...) : 
    internal error in RS_DBI_getConnection: corrupt connection handle 

如何安全地終止一個沒有分配句柄的連接?

+0

你並不需要在下一版本擔心這個問題(即版本在github上) – hadley 2015-04-07 18:05:22

+0

@hadley奇怪的事情。 (函數(類,fdef,mtable)中的錯誤: 無法找到用於簽名的函數'dbListConnections'的繼承方法'錯誤(函數「MySQLDriver」' ' – tchakravarty 2015-04-07 18:32:37

+0

@hadley出現各種其他錯誤,包括無法使用主目錄中的配置文件執行無密碼登錄 – tchakravarty 2015-04-07 18:35:33

回答

0

通常用於創建連接,獲取查詢的數據,然後關閉我用下面的函數連接:

getDataSql <- function(query) { 
    con = dbConnect(RMySQL::MySQL(), dbname = "dbname", host = "host", user = "username", password = "pasword", port = "port") 
    result <- dbGetQuery(con, query) 
    dbDisconnect(con) 
    result 
}