NodeJS连接查询看似随机地从未完成或出错

时间:2019-11-25 17:51:37

标签: node.js connection try-catch pool

在Windows PowerShell中运行Node.js时出现连接查询问题,我需要一些调试帮助。

下面的runsql函数可以运行很多次(也许数万次)而没有任何问题。突然,它只会挂起,并且在控制台日志(console.log(“发生的最后一件事情”);)之后什么也不做。似乎在connection.query内部或使用catch均未击中任何错误。 显然,因为它是在承诺中,不会达到解决/拒绝的目的,所以该脚本什么也不做。我在解决所有错误的方法上遇到了麻烦。

如果我给它一个晦涩的sql字符串,则连接查询将陷入错误。

任何想法/帮助将不胜感激。

pool = mysql.createPool({
    host     : config[environment].dbhost,
    user     : config[environment].dbuser,
    password : config[environment].dbpassword,
    database : config[environment].dbname,
    connectionLimit: 20,
    waitForConnections: false
});

async function connect() {
    return new Promise((resolve) => { 
        pool.getConnection(function(err, connection) {
            if (err) {
                console.log(err);
                responseSuccess.message ="failure with connection";
            }

            pool.on('end', function () {
                console.log("************* LOST CONNECTION!!! *************");
                connection.release();
            });
            resolve(connection);
        });
    });
}

async function runTestFunction() {
    return await runSQL(connection, sql);
}

async function runSQL (connection, sql) {
    return new Promise((resolve, reject) => { 

        try {
            console.log("last thing that happens");
            connection.query(sql, function (err, result) {
                if (err) {
                    console.log("*** Error With Sql: " + sql + " ***");
                    reject();
                }
                resolve(result);
            });
        } catch (err) {
            console.log("**** Error With Sql: " + sql + " ****");
            reject();
        }
    });
}

runTestFunction();

0 个答案:

没有答案