2015-04-06 16 views
6

RMySQL ile deneme yapıyorum ve bir tanıtıcı olmadan kazara bağlantı oluşturdum.RMySQL: Sapsız bir bağlantıyı kapatma

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

İlk aramanın geri dönüşünün hiçbir şeye atanmadığını unutmayın. Daha sonra bu çalıştı

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

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

: Bunu yaptığımda Şimdi, dbListConnections(MySQL()) iki bağlantı görmek

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

güvenle Nasıl sonlandırmak için: o zaman,

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

ama, ben hallederim bir tanıtıcı atanmamış bir bağlantı?

+0

sonraki sürümde bu konuda endişe etmenize gerek kalmaz on github) – hadley

+0

@hadley En tuhaf şey. Sadece güncellendi ve şimdi bana 'dbListConnections (MySQL()) # açık bağlantıları veriyor Hata (işlev (sınıflar, fdef, mtable): imzası için 'dbListConnections' işlevi için devralınan bir yöntem bulamıyor. "MySQLDriver" ' ' – tchakravarty

+0

@hadley Ana dizinde bir yapılandırma dosyası kullanarak parolasız oturum açma yapamazsınız da dahil olmak üzere her türlü diğer hatalar – tchakravarty

cevap

0

Genellikle bir bağlantı oluşturarak bir sorgunun veri alma ve sonra aşağıdaki işlevi kullanın bağlantıyı kapatmak için: (yani versiyon

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