NodeJS Mysql协议在出现致命错误后进行排队

mccptt67  于 2022-11-21  发布在  Mysql
关注(0)|答案(6)|浏览(209)

错误 意味 着 什么 ?

{ [Error: Cannot enqueue Query after fatal error.] code: 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR', fatal: false }

中 的 每 一 个
以下 代码 在 我 的 测试 文件 中 有效 :

function handleDisconnect() {
    objConn = mysql.createConnection(db_config);    // Recreate the connection, since
                                                    // the old one cannot be reused.
    objConn.connect(function(err) {                 // The server is either down
        if(err) {                                   // or restarting (takes a while sometimes).
            console.log('error when connecting to db:', err.code);
            setTimeout(handleDisconnect, 2000);     // We introduce a delay before attempting to reconnect,
        }else{
            console.log('Connected to db!');
        }                                           // to avoid a hot loop, and to allow our node script to
    });                                             // process asynchronous requests in the meantime.
                                                    // If you're also serving http, display a 503 error.
    objConn.on('error', function(err) {
        if(err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection to the MySQL server is usually
            handleDisconnect();                       // lost due to either server restart, or a
        }else{
            throw err;
        }
    });
}

handleDisconnect();
megaLoop();

function megaLoop(){
    objConn.query('SELECT u.`email` FROM `users` as u', function(err, rows) {
        console.log(err);
        console.log(rows);
    });
    setTimeout(megaLoop, 100); 
}

格式
但是 , 当 我 在 Express 应用 程序 中 使用 该 功能 时 , 我 收到 错误 :

{ [Error: Cannot enqueue Query after fatal error.] code: 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR', fatal: false }

格式
为什么 它 在 我 的 测试 中 工作 , 而 在 我 的 应用 中 不 工作 ?

5w9g7ksd

5w9g7ksd1#

我在连接MySQL时遇到过类似的问题。我使用连接池解决了这个问题。这个概念是只在需要时从连接池中获取连接,并在使用后释放它。这样连接就不会处于不稳定状态。您可以从here获得实现细节。

nkhmeac6

nkhmeac62#

我相信这个问题是一个express-sql-session。我现在也遇到了同样的问题。我想有人在这篇文章中说了一些事情:NodeJS running on MAC, and have an error occurred when deploying on centOS
也可以看看这个:https://github.com/felixge/node-mysql/issues/1166

sbtkgmzw

sbtkgmzw3#

我也遇到了同样的问题,只是发现我在Nodejs上的DB名称命名错误

xqkwcwgp

xqkwcwgp4#

打开MySQL命令行客户端并运行以下命令

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_current_password';

将密码插入<your_current_password>

dfuffjeb

dfuffjeb5#

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

1.在你的mysql工作台中使用上面的查询用你的实际密码替换'password' 2.然后重新启动你的服务器

tyg4sfes

tyg4sfes6#

打开MySql Workbench或MySql命令行并键入以下内容

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

现在,您的root用户密码是“password”,请在数据库连接中使用该密码,它将正常工作

相关问题