防止node.js进程死于MySQL查询错误

我有一个运行MySQL查询的node.js脚本。 当这个查询遇到错误时,node.js进程就会死亡。 它使用mysql-node模块。 https://github.com/mysqljs/mysql

这是我的代码;

function runQuery() { return new Promise(function (resolve, reject) { try { var connection = test_mysql.create_MySQL_conn(); var query_str = //MySQL query. blah blah ; var query_param = []; connection.query(query_str, query_param, function (err, rows, fields) { if (err) { console.log(err); return reject(err); } else { resolve(rows); } }); } catch (err) { reject(err); } }); } 

如何修改它,使脚本不会死在mysql查询遇到错误时?

你的问题的前提很可能是错误的。 即使您在MySQL查询中遇到错误,脚本也可能不会死亡。 你可以做一个简单的testing。

你可以运行下面的代码。

 function Delay(duration) { return new Promise((resolve) => { setTimeout(() => resolve(), duration); }); } function test_func() { Promise.resolve() .then(() => runQuery() ); } Promise.resolve() .then(() => Delay(3000)) .then(() => test_func() ) .then(() => Delay(3000)) .then(() => test_func() ); 

如果test_func()运行2次,则意味着脚本没有死掉。 可能,你遇到了一个很长的错误信息,并认为脚本实际上并没有死亡。