节点js + Mysql:由于致命错误而无法入队

时间:2016-08-18 17:54:28

标签: javascript mysql node.js express server

我正在运行一个带有节点js的应用程序(更具体地说是表达js),我用mysql客户端保存了一些数据。

它完美地工作了一段时间没有任何问题,但随后所有的suddden我得到这些错误:

  

跟踪:致命错误后无法将Quit排入队列。       在Protocol._validateEnqueue(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ protocol \ Protocol.js:218:11)       在Protocol._enqueue(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ protocol \ Protocol.js:135:13)       在Protocol.quit(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ protocol \ Protocol.js:88:23)       在PoolConnection.end(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ Connection.js:255:18)       在Pool._purgeConnection(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ Pool.js:259:16)       在PoolConnection._removeFromPool(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ PoolConnection.js:70:8)       在PoolConnection。 (C:\的NodeJS \十二发型\ node_modules \ MySQL的\ lib中\ PoolConnection.js:29:12)       在emitOne(events.js:77:13)       在PoolConnection.emit(events.js:169:7)       在PoolConnection.Connection._handleProtocolError(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ Connection.js:439:8)   跟踪:致命错误后无法将查询排入队列。       在Protocol._validateEnqueue(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ protocol \ Protocol.js:218:11)       在Protocol._enqueue(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ protocol \ Protocol.js:135:13)       在PoolConnection.query(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ Connection.js:214:25)       在Object.fetchDatas(C:\ nodejs \ twelve-coiffure \ public \ javascripts \ twelvebase.js:94:12)       在C:\ nodejs \ twelve-coiffure \ routes \ index.js:7:7       在Layer.handle [as handle_request](C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ layer.js:95:5)       在下一个(C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ route.js:131:13)       在Route.dispatch(C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ route.js:112:3)       在Layer.handle [as handle_request](C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ layer.js:95:5)       在C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ index.js:277:22   C:\的NodeJS \十二发型\ PUBLIC \ JavaScript的\ twelvebase.js:26           扔(消息);           ^

     

错误:致命错误后无法将查询排入队列。       在Protocol._validateEnqueue(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ protocol \ Protocol.js:199:16)       在Protocol._enqueue(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ protocol \ Protocol.js:135:13)       在PoolConnection.query(C:\ nodejs \ twelve-coiffure \ node_modules \ mysql \ lib \ Connection.js:214:25)       在Object.fetchDatas(C:\ nodejs \ twelve-coiffure \ public \ javascripts \ twelvebase.js:94:12)       在C:\ nodejs \ twelve-coiffure \ routes \ index.js:7:7       在Layer.handle [as handle_request](C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ layer.js:95:5)       在下一个(C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ route.js:131:13)       在Route.dispatch(C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ route.js:112:3)       在Layer.handle [as handle_request](C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ layer.js:95:5)       在C:\ nodejs \ twelve-coiffure \ node_modules \ express \ lib \ router \ index.js:277:22

问题是我真的无法在我的代码中找到问题的来源,而且我甚至不知道为什么有时会在工作中,有时候也不会。

以下是启动数据库的代码:

var mysql = require('mysql');
var dbPool = mysql.createPool({
 connectionLimit: 50,
 waitForConnections: true,
 queueLimit: 0,
 host: '*my host*',
 user: '*me*',
 password: '*my password*',
 database: '*heroku database*',
 wait_timeout:28800,
 connect_timeout:10,
 debug:true
});

dbPool.getConnection(function(err, connection) {
 if (err) throw (err);

 var db = connection;

 fetchDatas = function(callback) {

    // openDatabase();

    var servicesFemmes, servicesHommes, products;

    db.query("SELECT * FROM servicesFemmes", function(err, servicesFemmes, fields) {

        if (err) {
            callback(sendError(err));
        } else {

            db.query("SELECT * FROM servicesHommes", function(err, servicesHommes, fields) {
                if (err) {
                    callback(sendError(err));
                } else {
                    db.query("SELECT * FROM produits", function(err, products, fields) {
                        if (err) {
                            callback(sendError(err));
                        } else {
                            db.query("SELECT * FROM carousel", function(err, carousel, fields) {
                                if (err) {
                                    callback(sendError(err));
                                } else {
                                    callback(null, servicesFemmes, servicesHommes, products, carousel);
                                }
                            });
                        }
                    });
                }
            });
        }
    });
}
}
}

当然,我从另一个文件调用fetchDatas()来获取要显示的所有数据。

1 个答案:

答案 0 :(得分:0)

对我来说,我之所以收到此错误,仅仅是因为MySql服务器未运行,因此检查该值是一个好主意