我不能在这里粘贴整个脚本,但我正在解释这种情况。如果你有泄漏的数据库连接,那么你就会知道我在说什么。
我有一个R脚本文件,它有许多功能(大约50个)使用DBI
& RMySQL
R包。我通过4或5个函数整合了所有数据库访问。我在使用on.exit(dbDisconnect(db))
的每个函数中使用dbConnect
。
我发现只使用source("dbscripts.R")
加载此脚本会导致一个数据库连接泄漏。我在运行命令时看到了这个
dbListConnections(MySQL())
[[1]] 的MySqlConnection:0607>
[[2]] 的MySqlConnection:0608>
[[3]] 的MySqlConnection:0609>
[[4]] 的MySqlConnection:0610>
我每次都会在列表中看到再添加一个数据库连接。这很快达到16,我的脚本停止工作。
问题是,我无法找出导致泄漏的代码行。
我检查了代码中的每个dbConnect
行。所有这些都在函数内,主代码外没有dbConnect
。
那么,为什么会发生连接泄漏?