0
我有一个基本的类似Twitter的应用程序,可以在一个用户在线时正常工作。但是,当多个用户联机并尝试执行SQL查询时,服务器会崩溃。Node.js - 并发SQL查询崩溃服务器
这是因为函数为第一个用户关闭了数据库,而第二个用户仍然是中间函数,则第二个用户试图关闭已关闭的数据库,导致崩溃。
这是一个基本功能为例:
function showAllUsers(req, res){
dbConnect();
var query = 'SELECT * FROM USERS';
connection.query(query, function (err,rows,fields){
if (err) {
throw err;
}
dbClose(req,res);
console.log(rows);
res.render('allUsers', { user: req.user, message: req.flash('info'), users: rows })
})
}
我使用的是来自NPM mysql的包,但我假设我没有正确地使用它。我目前在每次查询之前打开数据库,并在之后立即关闭数据库。
有没有更安全的方法来做到这一点,或者我可以把它打开直到服务器退出?
你看过[连接池](https://github.com/felixge/node-mysql#pooling-connections)吗? – robertklep 2013-03-12 11:58:38
您的代码无法正常工作,因此您不会感到意外。你不能像这样分享连接,试试这很愚蠢。 它是“崩溃服务器”意味着代码中存在错误 - 即使它是一个愚蠢的用例,node.js不应该通过崩溃来响应。获取核心转储和回溯并将其记录为缺陷。 – symcbean 2013-03-12 13:04:35