我在我的nodejs应用程序中使用oracle数据库。
更改任何表时,我收到错误资源已在使用。
此错误的原因是,当终止或退出nodejs应用程序时,数据库连接未被释放或关闭。
我知道如何发布数据库连接
function doRelease() {
db.close(
function (err) {
if (err)
console.error(err.message);
});
}
但我不知道,如何在nodejs exit或node terminate上调用上面的函数?
所以我想要简单的帮助
退出或终止nodejs应用程序时如何释放数据库连接
任何帮助将不胜感激
答案 0 :(得分:0)
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : XX,
host : 'yourHost',
user : 'user',
password : 'password'
});
pool.getConnection(function(err, connection,) {
connection.query( 'SELECT something FROM sometable', function(err, rows) {
//handler
connection.release();//this is the important step
});
});
您也可以使用: .query
pool.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
//your success handler
});
pool.query()
是pool.getConnection()
+ connection.query()
+ connection.release()
如果您在退出处理程序上查找内容:
function graceExitHandler(){
// close the db connection here.
..
}
//when nodejs app is closing
process.on('exit', exitHandler);
//on Ctrl + C interrupt
process.on('SIGINT', exitHandler);
答案 1 :(得分:0)
关于nodejs退出的类似问题在link
if(!ncol(data_read) == 9){
print("There are not 9 columns in this file")
return(FALSE)
} else if{
OTHER PARAMETERS HERE (such as the one I'm trying to figure out)
}
return(TRUE}
}
以上代码对我有用
答案 2 :(得分:0)
简单的解决方案是使用initialize
和close
等方法创建数据库模块。然后你需要在合适的时间调用这些方法。我喜欢将它们绑定到主模块中的各种事件中。
在Creating a REST API with Node.js and Oracle Database上查看我的系列中的第1部分和第2部分,了解相关内容。