Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在数据库切换到空闲状态后发生致命错误后获取错误协议\u排队\u_Mysql_Sql_Node.js_Express - Fatal编程技术网

Mysql 在数据库切换到空闲状态后发生致命错误后获取错误协议\u排队\u

Mysql 在数据库切换到空闲状态后发生致命错误后获取错误协议\u排队\u,mysql,sql,node.js,express,Mysql,Sql,Node.js,Express,在非工作时间,DB处于空闲状态。因此,我使用以下代码片段重新连接数据 var mysql = require('mysql'); var settings = require('./config.js'); var connection; function handleDisconnect() { connection = mysql.createConnection({ host: settings.dbhost, user: settings.user, pas

在非工作时间,DB处于空闲状态。因此,我使用以下代码片段重新连接数据

var mysql = require('mysql');
var settings = require('./config.js');

var connection;

function handleDisconnect() {

connection = mysql.createConnection({
    host: settings.dbhost,
    user: settings.user,
    password: settings.password,
    database: settings.database
});

connection.connect(function (err) {
    if (err) {
        console.log('Error when connecting to db:', err, settings.database);
        setTimeout(handleDisconnect, 2000);
    }
    else {
        console.log("Database is connected ...", settings.database);
    }
});

connection.on('error', function (err) {
    console.log('db error', err, settings.database);
    if (err.code === 'PROTOCOL_CONNECTION_LOST') {

        connection
        handleDisconnect();
    } else {
        throw err;
    }
});
}

handleDisconnect();

module.exports = connection;
执行DB查询时,我遇到以下错误:

{
    "status": 500,
    "Error": {
        "code": "PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR",
        "fatal": false
    }
} 

关于如何解决这个问题有什么想法吗?

一个可能但不完美的解决方案是使用
sql.ConnectionPool()

是的,我也面临同样的问题。与此同时,我切换到了sql.ConnectionPool(),是的,这是可能的解决方案,但我们也必须找到替代方法。