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