2013-03-04 87 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服務器。