Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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查询在Node.js调度程序作业中抛出ECONNREFUSED_Mysql_Node.js - Fatal编程技术网

Mysql查询在Node.js调度程序作业中抛出ECONNREFUSED

Mysql查询在Node.js调度程序作业中抛出ECONNREFUSED,mysql,node.js,Mysql,Node.js,我正在尝试使用节点调度和节点mysql模块构建一个具有节点(v0.10.33)的调度器。代码如下: var schedule = require('node-schedule'); var mysql = require('mysql'); var rule = new schedule.RecurrenceRule(); rule.second = 59; schedule.scheduleJob(rule, function(){ var connection = db.conne

我正在尝试使用节点调度和节点mysql模块构建一个具有节点(v0.10.33)的调度器。代码如下:

var schedule = require('node-schedule');
var mysql = require('mysql');

var rule = new schedule.RecurrenceRule();
rule.second = 59;
schedule.scheduleJob(rule, function(){
    var connection = db.connect();
    console.log('Successfully established database connection.');
    var resultSet = db.select(connection, 'SELECT * from notifications');
    db.disconnect(connection);
});

var db = {

    connect: function(){
        var connection = mysql.createConnection({
            host     : 'localhost',
            user     : 'scheduler',
            password : 'scheduler'
        });
        console.log('Trying to establish connection with database...');
        connection.connect();
        return connection;
         },

    select: function(connection, queryString){
            console.log('Executing database query...');
        connection.query(queryString, function(err, rows, fields) {
            if (err) throw err;
            console.log('The solution is: ', rows[0].messagetext);
            return rows;
        });
       },

    disconnect: function(connection){
    connection.end();
    }
}
当我执行调度程序时,我得到以下输出:

Trying to establish connection with database...
Successfully established database connection.
Executing database query...

/home/user/notificationscheduler/scheduler.js:32
            if (err) throw err;
                           ^
Error: connect ECONNREFUSED
    at errnoException (net.js:904:11)
    at Object.afterConnect [as oncomplete] (net.js:895:19)
    --------------------
    at Protocol._enqueue (/home/user/notificationscheduler/node_modules/mysql/lib/protocol/Protocol.js:135:48)
    at Protocol.handshake (/home/user/notificationscheduler/node_modules/mysql/lib/protocol/Protocol.js:52:41)
    at Connection.connect (/home/user/notificationscheduler/node_modules/mysql/lib/Connection.js:119:18)
    at Object.db.connect (/home/user/notificationscheduler/scheduler.js:25:14)
    at Job.db.connect.mysql.createConnection.host [as job] (/home/user/notificationscheduler/scheduler.js:9:25)
    at Job.invoke (/home/user/notificationscheduler/node_modules/node-schedule/lib/schedule.js:117:10)
    at null._onTimeout (/home/user/notificationscheduler/node_modules/node-schedule/lib/schedule.js:369:11)
    at Timer.listOnTimeout [as ontimeout] (timers.js:112:15) 
mysql服务器正在本地运行,我尝试与调度器用户成功连接并运行同一查询

是否有人曾使用过这些模块?问题的原因是什么


非常感谢

是的,这是因为异步发动机v8。当您拨打电话时:

db.select(connection, 'SELECT * from notifications')
它不会等到查询完成并返回结果。这是由您的回调处理的,但是您正在关闭与db的连接,并且查询遇到错误。如果要更正行为,需要在“选择”中关闭连接:

 select: function(connection, queryString){
            console.log('Executing database query...');
        connection.query(queryString, function(err, rows, fields) {
            if (err) throw err;
            console.log('The solution is: ', rows[0].messagetext);
            connection.end(); // Here close the connection
            return rows;
        });
       },

说得好,谢谢。但我认为这只是问题的一部分。我得到的错误似乎是由TCP连接引起的,它没有在我的MySQL服务器上配置。我得到了验证,但感谢您的输入。我必须在mysql服务器上运行'mysql configure--socket',并在'socketPath'连接参数中包含生成的.sock文件的路径。