NodeJS mysql连接池使用及遇到的神坑

原文: NodeJS mysql连接池使用及遇到的坑

神坑:

并发访问时,通过 conn.release()释放连接不成功 ,导致一定访问达到连接数上限后,
pool.getConnection 直接卡死没有任何的回调
改成 pool.releaseConnection(conn) 才okay!

PS: 可以通过以下命令查看当前的mysql连接数:
mysqladmin -uroot -proot processlist

explain

开发的项目中的确 出现了这个问题,感谢原博主的分享。特此记录一下

改造后的代码

const mysqlDb = require('mysql');
const mysqlPool = mysqlDb.createPool(config.mysqlConnect);

const query = function (sql, callback) {
    console.log("test--10:",sql);
    // var mysqlPool = mysqlDb.createPool(config.mysqlConnect);
    mysqlPool.getConnection(function (err, conn) {
        if (err) {
            console.log("test--11:",err);
            callback(err, null, null);
            throw new Error(" 从mysql 连接池中 获取 连接失败[luo Mr.]!!");
        } else {
            console.log("test--12:",sql);
            if( sql == null ){ 
                    // 兼容sql为 null
                return callback( undefined, "", "",);
            }
            conn.query(sql, function (qerr, vals, fields) {
                console.log("test--13:",qerr, vals);
                // 释放连接
                // conn.release();
                mysqlPool.releaseConnection(conn)
                // 事件驱动回调
                callback(qerr, vals, fields);
            });
        }
    });
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容