2017-07-16 87 views
0

我需要提供模塊MySQL連接,所以提供這樣的代碼:節點和MySQL連接到數據庫

var express = require('express'); 
var mysql = require('mysql') 
var app = express(); 

var connection = mysql.createConnection({ 
    host: '149.xxx.xx.x', 
    user: 'User', 
    password: 'Password', 
    database: 'DataBase', 
    port: 1443, 
}); 

connection.connect(
    function(error) { 
     console.log(error.code); // 'ECONNREFUSED' 
     console.log(error.fatal); // true 
     console.log(error.sql); 
     console.log(error.sqlMessage);  
} 
); 

和經過一段時間後(約1-2分鐘)我從收到錯誤那些console.logs:

ECONNRESET 
true 
undefined 
undefined 

我想,也許是因爲我的「nonactivity」超時,但是當我試圖做的查詢中的錯誤是一樣的。

有什麼想法是什麼錯?我從DataGrip中檢查它,數據是正確的。

+0

你是如何做查詢?你能爲此顯示代碼嗎? – aug

+2

你確定它是一個MySQL服務器嗎?端口1443是MS SQL Server的默認端口。 – mscdex

+0

@mscdex明天我會問,但後端開發人員告訴我有關MySQL。當然我會盡快檢查這個mssql的節點庫。 – P4TRYK

回答

0

好的,我在這裏發現了一個小錯誤。該數據庫是MS SQL Server(microsoft)。我想現在使用名爲mssql連接到數據庫的圖書館,提供一些代碼:

var config = { 
    server: "149.xxx.xx.x", 
    database: "Database", 
    user: "User", 
    password: "Password", 
    connectionTimeout: 300000, 
    requestTimeout: 300000, 
    pool: { 
     idleTimeoutMillis: 300000, 
     max: 100 
    } 
}; 

function getEmp() { 
    var connection = new sql.Connection(config); 
    var req = new sql.Request(connection); 

    connection.connect(function (error) { 
     if(error) { 
      console.log(error); 
      return; 
     } 
     req.query('Procedure', function(err, data) { 
      if (err) { 
       console.log(err); 
      } else { 
       console.log(data); 
      } 
      connection.close(); 
     }); 
    }); 
} 

getEmp(); 

,我收到錯誤消息:

{ ConnectionError: Failed to connect to 149.xxx.xx.x:1433 - connect ETIMEDOUT 149.xxx.xx.x:1433 
at Connection.<anonymous> (/Users/phuzarski/Learning/NodeJS/srv-express/node_modules/mssql/lib/tedious.js:353:25) 
at Connection.g (events.js:292:16) 
at emitOne (events.js:96:13) 
at Connection.emit (events.js:188:7) 
at Connection.socketError (/Users/phuzarski/Learning/NodeJS/srv-express/node_modules/tedious/lib/connection.js:791:12) 
at Socket.<anonymous> (/Users/phuzarski/Learning/NodeJS/srv-express/node_modules/tedious/lib/connection.js:33:15) 
at emitOne (events.js:96:13) 
at Socket.emit (events.js:188:7) 
at emitErrorNT (net.js:1277:8) 
at _combinedTickCallback (internal/process/next_tick.js:80:11) 


name: 'ConnectionError', 
    message: 'Failed to connect to 149.xxx.xx.x:1433 - connect ETIMEDOUT 149.xxx.xx.x:1433', 
    code: 'ESOCKET' } 

可以肯定的數據是正確─DataGrip是連接這裏罰款。

我發現在谷歌的類似問題,問題是禁用TCP/IP。我檢查了這一個,它是使用此端口1443啓用。