gpt4 book ai didi

mysql - 错误 : Cannot enqueue Query after fatal error. Expressjs。 mysql

转载 作者:可可西里 更新时间:2023-11-01 08:08:56 27 4
gpt4 key购买 nike

我有我的 Express js 连接到多个数据库。每次我启动我的应用程序时都有效。但是,只要我与数据库的连接失效...连接就会返回错误代码 PROTOCOL_CONNECTION_LOST。当连接空闲时,这对于 mysql 来说是正常的。我的 mysql 服务器部署在 AWS RDS 中,它也可以正常工作。

问题是,每当我的 express 应用程序遇到 PROTOCOL_CONNECTION_LOST 错误时,它应该重新连接到数据库,这实际上也可以。 BUUT 当我尝试查询我的 MYSQL 数据库时。它返回一个 Error: Cannot enqueue Query after fatal error. 错误。我已经处理这个问题一段时间了,我的解决方法是每次都重新启动 express 应用程序。希望其他人遇到过这个并可以提供建议。

这是我连接到数据库的示例代码:

var mysql = require('mysql');
var mysqlConn
// mysqlConn.connect();

function handleDisconnect() {
mysqlConn = mysql.createConnection({
host: 'aws_instance***',
user: '******',
password: '*****',
database: 'my_db',
multipleStatements: true
});

mysqlConn.connect(function (err) {
if (err) {
console.log('ERROR CONNECT admin:', err.code + '--' + err.address);
setTimeout(handleDisconnect, 2000);
} else {
console.log('Connected to DB')
}
});

mysqlConn.on('error', function (err) {
console.log('ERROR admin', err.code + '--' + err.address);
if (err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection to the MySQL server is usually
console.log("Connection to db lost!")
handleDisconnect(); // lost due to either server restart, or a
} else {
console.log(err) // connnection idle timeout (the wait_timeout
throw err; // server variable configures this)
}
});

}

handleDisconnect();
module.exports = {
mysqlConn: mysqlConn,
};

然后这是我的输出日志,如我的服务器日志所示。

ERROR db PROTOCOL_CONNECTION_LOST--undefined
Connection to db lost!
Connected to db
OPTIONS /verify-token/ 200 0.285 ms - 4
Error: Cannot enqueue Query after fatal error.
POST /verify-token/ 500 1.332 ms - 95
OPTIONS /auth/login 200 0.793 ms - 4
Error: Cannot enqueue Query after fatal error.
POST /login 500 1.564 ms - 58
OPTIONS /login 200 0.687 ms - 4
Error: Cannot enqueue Query after fatal error.
POST /login 500 1.467 ms - 58

最佳答案

虽然有workarounds ,他们显然 don't work for everyone .文档中的建议是 use connection pooling而不是手动管理各个连接。

关于mysql - 错误 : Cannot enqueue Query after fatal error. Expressjs。 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52771661/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com