2016-04-24 103 views
3

我很難及時解決這個問題。當我嘗試節點連接到AWS的RDS MySQL數據庫,我收到此錯誤:連接節點v5.10.1時握手不活動超時錯誤。 to aws mysql RDS

{ [Error: Handshake inactivity timeout] 
    code: 'PROTOCOL_SEQUENCE_TIMEOUT', 
    fatal: true, 
    timeout: 10000 } 

解決方案在線則建議到節點V4.2.1,但我對v5.10.1。 當我將節點連接到本地主機mysql時,我沒有任何問題。

這裏是我的代碼:

connectionpool = mysql.createPool({ 
     host  : 'dev-db.xxxxxx.us-west-2.rds.amazonaws.com', 
     user  : 'xxxxx', 
     password : 'xxxxx', 
     database : 'decurate', 

    }); 

app.get('/:table', function(req,res){ 
connectionpool.getConnection(function(err, connection) { 
     if (err) { 
      console.error('CONNECTION error: ',err); 
      res.statusCode = 503; 
       res.send({ 
       result: 'error', 
       err: err.code 
      }); 
     } else { 

      connection.query('SELECT * FROM user ORDER BY user_id DESC LIMIT 20', req.params.id, function(err, rows, fields) { 
       if (err) { 
        console.error(err); 
        res.statusCode = 500; 
        res.send({ 
         result: 'error', 
         err: err.code 
        }); 
       } 


       res.send({ 
        result: 'success', 
        err: '', 
        json: rows 
       }); 
       connection.release(); 
      }); 
     } 
    }); 


}); 

請指教。

謝謝!

+0

您是否嘗試使用mysql命令行客戶端從節點機器連接到服務器...或使用'nc'甚至是'telnet' - 驗證簡單的網絡連接性? –

+0

是的,它工作正常,如果我通過SSH或MSQL工作臺連接到MySQL服務器。 '只是不在節點工作。 –

+0

好的,但*從機器運行節點*執行命令'nc dev-db.xxxxxx.us-west-2.rds.amazonaws.com 3306'返回期望的垃圾字符串,如'N 5.6.19 -logxxxwRrf,FZpxxxHUQx)A- [CA?Rmysql_native_password'?或者'telnet dev-db.xxxxxx.us-west-2.rds.amazonaws.com 3306'甚至是'cat

回答

0

我想問題是無法連接到MySQL數據庫的主機。我通過將主機配置添加到我的主機文件來解決此問題。即使您運行的任何aws實例,您也應該將您的域名配置爲hosts文件。因此,在您的應用程序配置中會自動查找所需的IP地址。

127.0.0.1  localhost 
127.0.0.1  yourdomain.com 

重新啓動你的apache。

它適用於我。試試這個&讓我知道。