2016-06-26 70 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); 
    }); 
};