我遇到了一个奇怪的错误,这可能是因为我对mysql / node的理解不充分:
目前,我正在运行一个脚本,该脚本尝试向查询mysql数据库的函数进行500,000次调用(总计)。 我遇到的错误出现在几千次迭代之后,当突然“连接”时,即pool.getConnection创建的对象 突然未定义,我的代码崩溃了。
我认为这或许与我有太多连接打开的事实有关,但是自从代码开始 遇到此错误是作为回调函数的一部分发生连接后,我很困惑。 如果有人可以看看我的代码(运行500,000次的代码)并给我一些建议,我真的很感激! 作为最后一点,我注意到当我调用connection.destroy()而不是connection.release()时,我没有收到任何错误。 但是,当我这样做时,数据库不会被写入!
再次感谢...
function addOrUpdate(food, info){
try{
pool.getConnection(function(err, connection) {
if (typeof(food)!="string" || typeof(info)!="object"){
connection.release();
return;}
if(info['length']==0){
connection.release();
return;
}
var f=connection.escape(food);
connection.query("SELECT * FROM nut where name like "+f, function (err,results){
if (err) throw err;
if (results.length==0){
console.log("INSERT INTO nut (name) values ("+f+")");
connection.query("INSERT INTO nut (name) values ("+f+")");
for(var key in info){
var v=connection.escape(info[key]);
console.log("UPDATE nut SET "+key+"="+v+" where name ="+f);
connection.query("UPDATE nut SET "+key+"="+v+" where name ="+f);
}
}
connection.release();
});
});
}
catch(e){
console.log('alternative error');
connection.release();
}}