2016-06-26 71 views
0

夥計。我正在學習如何使用Express連接到遠程MySQL。所以,我開始在我的本地機器(本地MySQL服務器)上做這件事。當我在本地環境上成功執行後,我嘗試將連接更改爲遠程MySQL託管(位於DB4Free處)。是的,我已經在本地主機上成功執行了。但是,每當我運行Get/Post到遠程MySQL服務器時,我的控制檯會顯示下面的錯誤。我會在這裏附上相關的代碼段。整個下午我一直在嘗試。 希望有人在這裏可以啓發這個問題。謝謝你在前進的傢伙:)連接MySQL的Nodejs(Express) - 本地和遠程連接不同?

這是在我的控制檯中顯示的錯誤

enter image description here

我的連接數據庫文件是如下 - ConnectionString.js

var mysql = require("mysql"); 

var pool = mysql.createPool({ 
     connectionLimit : 100, 
     host  : '85.10.205.173:3306', 
     user  : '******* ', 
     password : '*******', 
     database : '*******', 
    }); 

exports.getConnection = function(callback) { 
    pool.getConnection(function(err, conn) { 
    if(err) { 
     return callback(err); 
    } 
    callback(err, conn); 
    }); 
}; 

部分我的文件的路徑和查詢的是這個

var express = require('express'); 
var router = express.Router(); 
var mysql  = require('mysql'); 
var conn = require('../database/ConnectionString'); 

var result; 

//Validate user login 
router.get('/login', function(req, res, next) { 

     conn.getConnection(
      function (err, client) { 

       client.query('SELECT * FROM mt_User', function(err, rows) { 
        // And done with the connection. 
        if(err){ 
         console.log('Query Error'); 
        } 

        res.json(rows); 
        client.release(); 

        // Don't use the connection here, it has been returned to the pool. 
       }); 

     });  

}); 
+0

你測試瞭如果你可以從命令行訪問mysql(遠程的)嗎? –

+0

不,但我已經使用php代碼進行了測試。它使用同一組連接字符串正常工作 – DriLLFreAK100

回答

3

好吧,我已經找到了問題。看來,在npm中的mysql包需要將主機和端口分別定義爲。在將它調整爲下面的代碼以供我的ConnectionString.js文件使用之後。它終於有效。

var mysql = require("mysql"); 

var pool = mysql.createPool({ 
     connectionLimit : 100, 
     host  : '85.10.205.173', 
     port  : 3306, 
     user  : '*******', 
     password : '*******', 
     database : '*******', 
    }); 

exports.getConnection = function(callback) { 
    pool.getConnection(function(err, conn) { 
    if(err) { 
     return callback(err); 
    } 
    callback(err, conn); 
    }); 
};