我在几个网页上抓取表并使用表中的项更新MYSQL数据库。我正在使用MYSQL模块,并在遍历所有行时遇到各种错误。下面是功能一次迭代:在nodejs中循环mysql查询
var connection = mysql.createConnection(opts);
connection.connect();
function updateDB(o,lang){
var tbl_name = "news_"+lang;
o.forEach(function(entry,index,arr){
var sql1 = "SELECT * FROM "+tbl_name+" WHERE url = '"+htmlencode.htmlEncode(entry.url)+"' and omit = '1'";
connection.query(sql1, function(err, rows, fields) {
connection.end();
if (err){
console.log("can't run query=" + sql1 +"\n Error="+err);
}
else{
console.log('ROWS:',rows);
// if rows.length = 0 then update table with new info here...
}
});
});
};
,如果我注释掉connection.end()线,但随后的连接永远不会结束,处理保持永远活着的实际工作。我将它作为批处理脚本运行,因此我需要它以优雅的方式结束。随着connection.end()到位我得到一个"Cannot enqueue Quit after invoking quit."
我试图把connection.end
在使用async.series的最终回调,但仍然无法正常工作。我已经尝试使用池和不同的代码迭代来尝试获得某些工作。我用我的智慧结束了使用mysql模块,并想知道是否有另一个更好的工作。
谢谢,但我有同样的问题,连接永不结束,所以我从来没有得到“完成处理”控制台日志。 – septemberbrain 2014-11-14 21:30:27