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

时间:2016-09-01 02:30:15

标签: node.js node-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查询错误时脚本不会死?

1 个答案:

答案 0 :(得分:1)

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

您可以运行以下代码。

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次,则表示脚本没有死亡。可能是您遇到了一条很长的错误消息,并认为该脚本实际上没有消失。