首页 > 解决方案 > 池连接上的nodejs mysql错误:连接丢失:服务器关闭了连接

问题描述

我的问题与这篇文章类似,但解决方案对我不起作用,可能是因为我使用了不同类型的 mysql 连接(池)。这是我的代码:

    let config= {
        host: '***',
        user: 'admin',
        password: '***,
        port: '3306',
        database: '***',
        multipleStatements: true
    };

const con = mysql.createPool(config);
select();
function select(){
    return new Promise((resolve, reject) => {
        con.getConnection(function (err, connection) {
            if (err) throw err;
            else
                console.log("Connected!");
            let sql = "SELECT * FROM bidPrice WHERE idExchangePlatform = 2;";
            connection.query(sql, function (err, results, fields) {
                connection.release();
                connection.destroy();
                if (err) throw err;
                console.log(results)
                resolve(results);
            });

        });
    });
}

我还需要提一下,我使用以下命令运行此功能

node --max-old-space-size=31744 index.js # Increase to 31 GB 

这是因为我正在处理来自数据库查询的数百万条记录如果我使用常规节点命令运行它,我会得到Javascript heap out of memory

当我尝试将前面提到的解决方案集成到我的代码中时,我只是在一段时间后得到一个“被杀死”的日志,然后进程停止,我应该在使用 mysql.pool 时以不同的方式处理服务器断开连接吗?

在此处输入图像描述

标签: javascriptmysqlnode.js

解决方案


如果您有很多行的大表,则必须检查列“idExchangePlatform”的索引并创建如果没有成功

以及您的代码的简单变体:

function select(){
    return new Promise((rs, rj) => {
        let sql = "SELECT * FROM bidPrice WHERE idExchangePlatform = 2;";
        pool.query(sql, (err, rows) => {
            if(err)
                return rj(err);
            return rs(rows);
        })
    });
}

推荐阅读