2013-03-04 88 views
4

我试图用node-mysql连接到我的mysql数据库。当我尝试下面的代码,我得到这个错误:连接Node-mysql的麻烦

错误:错误:连接ETIMEDOUT

没有人知道什么是错?数据库启动并顺利运行。

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1337/'); 

var mysql = require('mysql'); 

var connection = mysql.createConnection({ 
    host: "correct_host", 
    user: "correct_user", 
    password: "correct_password", 
    database: "correct_database", 
    debug: true, 
}); 

connection.connect(function(err) { 
    if (err) { 
     console.log('ERROR: ' + err); 
    } else { 
     console.log('Connected to ' + server.hostname + ' (' + server.version + ')'); 
    }; 
}); 

connection.query('SELECT 1', function(err, rows) { 
    // connected! (unless `err` is set) 
}); 

connection.query('SELECT * FROM Effect', function(err, rows, fields) { 
    if (err) console.log('ERROR: ' + err); 

    for (x in rows) { 
    console.log('Row: ', x); 
    } 
}); 

// Handle disconnect 

function handleDisconnect(connection) { 
    connection.on('error', function(err) { 
    if (!err.fatal) { 
     return; 
    } 

    if (err.code !== 'PROTOCOL_CONNECTION_LOST') { 
     throw err; 
    } 

    console.log('Re-connecting lost connection: ' + err.stack); 

    connection = mysql.createConnection(connection.config); 
    handleDisconnect(connection); 
    connection.connect(); 
    }); 
} 

handleDisconnect(connection); 
+1

我相信问题出在你的'host'或'database'参数上。你说数据库已经启动并正在运行。 - 它运行在同一台机器上吗?你是否用不同的方式验证了连接到数据库的信息? – 2013-03-04 13:46:27

+0

是的,我可以使用phpmyadmin来登录数据库来管理数据库 – Sindresvends 2013-03-05 08:40:05

+1

这可能是因为你的mysql数据库只监听'127.0.0.1'或'localhost'上的连接。你应该尽量确保。 – 2013-03-12 16:43:30

回答

0

它可能不是节点。如果是节点,那么检查host: "correct_host"实际上是正确的主机。否则,请尝试从节点外的命令行连接到您的mysql服务器。