致命错误后无法排队查询

时间:2017-03-04 13:56:15

标签: mysql node.js

您好我是nodejs的新手,并尝试连接Mysql。
我真的很容易犯错误致命错误后无法排队查询。
a)我没有使用连接池,以免开始复杂化 b)我在代码开头写了connection.connect(),但是当我读到不需要的链接时将其删除。 (参见下面的链接)
Cannot enqueue Handshake after invoking quit

以下是我所有查询的格式。

function matchFirstName(person_name){
              var query = "select firstName,lastname, username,securityRole from users where firstName='"+person_name+"'" ;
              connection.query(query, 
                function (err, rows) {
                    if (err || rows.length === 0) {
                        if(err){
                            console.log("error " + err);                
                            connection.end();
                        }
                    }
                    else{  
                        // some code or call to a different function which too might call a query in the same manner
                    }
            });
        }


有人请建议永久解决这个问题。
我已经尝试从我的代码中删除connection.end(),但这也没有帮助。突然出现此错误。

更新: 我想我找到了原因。首先,我使用的一些查询(通常正常运行的查询)会出现 ETIMEDOUT 问题,然后每个后续查询都会失败。 我将connectTimeout从60000增加到120000毫秒,并添加了以下代码。

connection.on('error', function (err){
     if(err.code === 'ETIMEDOUT' ){
         connection.connect();
     }
});

这会解决我的问题吗?

0 个答案:

没有答案