2015-04-06 7 views
6

मैं RMySQL के साथ प्रयोग कर रहा हूं, और गलती से हैंडल के बिना कनेक्शन बनाया है।RMySQL: हैंडल के बिना कनेक्शन बंद करना

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

ध्यान दें कि पहले कॉल की वापसी किसी भी चीज़ को सौंपा नहीं गया है।

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

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

मैं तो इस की कोशिश की: अब, जब मैं कर एक dbListConnections(MySQL()) मैं दो कनेक्शन देखने

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

कैसे सुरक्षित रूप से समाप्त करने के लिए:

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

लेकिन, फिर, मैं यह मिल गया एक कनेक्शन जो एक हैंडल असाइन नहीं किया गया है?

+0

आप अगले संस्करण में इस बारे में चिंता करने की जरूरत नहीं होगी (गीथब पर) – hadley

+0

@ हैडली अजीब चीज। बस अपडेट किया गया, और अब यह मुझे '> dbListConnections (MySQL()) # खुले कनेक्शन त्रुटि (फ़ंक्शन (कक्षाएं, fdef, mtable) में त्रुटि देता है: हस्ताक्षर के लिए' dbListConnections 'फ़ंक्शन के लिए विरासत विधि खोजने में असमर्थ' "MySQLDriver" ' – tchakravarty

+0

@ हैडली सभी प्रकार की अन्य त्रुटियां पॉप अप हो रही हैं, जिसमें होम निर्देशिका में कॉन्फ़िगरेशन फ़ाइल का उपयोग करके पासवर्ड रहित लॉगिन करने में असमर्थ शामिल हैं। – tchakravarty

उत्तर

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 
} 
संबंधित मुद्दे