0

發生的事情我試圖用Node.js的,並在第一次連接到MySQL數據庫,它的工作原理。然後,有點隨意,它提供了以下錯誤:的Node.js/MySQL的 - 錯誤:連接ECONNREFUSED - 隨機

Error: connect ECONNREFUSED 127.0.0.1:3306 
    at Object._errnoException (util.js:1031:13) 
    at _exceptionWithHostPort (util.js:1052:20) 
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1195:14) 
    -------------------- 
    at Protocol._enqueue (/root/Geola/node_modules/mysql/lib/protocol/Protocol.js:145:48) 
    at Protocol.handshake (/root/Geola/node_modules/mysql/lib/protocol/Protocol.js:52:23) 
    at Connection.connect (/root/Geola/node_modules/mysql/lib/Connection.js:130:18) 
    at Object.<anonymous> (/root/Geola/runMain.js:24:12) 
    at Module._compile (module.js:641:30) 
    at Object.Module._extensions..js (module.js:652:10) 
    at Module.load (module.js:560:32) 
    at tryModuleLoad (module.js:503:12) 
    at Function.Module._load (module.js:495:3) 
    at Object.<anonymous> (/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js:73:21) 

我雙重檢查該端口是通過使用命令netstat -tlnp正確,回來tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 25362/mysqld

這似乎是正確的,所以我重新啓動Node.JS應用程序和一切工作再次......直到再次,隨機,錯誤再次彈出。我測試了它是否僅在我嘗試與數據庫進行交互時發生錯誤,並且我發現它確實隨機地吐出了這個錯誤。有時我可以很好地與數據庫進行交互,有時我不能。我覺得這個錯誤很奇怪,所以如果有人知道這個問題,請讓我知道。謝謝!

+0

'的mysql> SHOW STATUS LIKE「UPTIME」發送一個極限;'。現在運行該查詢,記下該值,然後在下次發生此錯誤時再次運行該值。這是自MySQL進程上次重新啓動以來的秒數,除非您重新啓動服務,否則該數字從不會變小。如果是這樣,有些東西會導致MySQL服務器守護進程崩潰並恢復。這是最可能的解釋。 –

回答

0

這是,如果你的應用程序無法連接到您的MySQL實例引起的。所以他們不傾聽到mysql error事件拋出你可以捕捉這些錯誤。

connection.on('error', function(err) { 
    console.log(err) 
}) 

即使mysql在3306上運行,您可能已經超出了連接或它可能是暫時的網絡問題。你可以用show variables like "max_connections"來檢查mysql,你可能需要增加這個。另外,請確保您的應用只在啓動時建立連接,而不是在路由或其他動態區域內。但是,當我遇到這種情況時,通常是由於應用程序服務器和數據庫服務器之間的網絡連接不良。

+0

我的應用程序確實只建立在啓動時連接,但是,當我運行'connection.query( 「顯示變量,如 'MAX_CONNECTIONS'」,函數(ERR,結果){ 的console.log(結果) })',沒有記錄 –

0

好,我找到了答案。它只是認爲數字海洋,數據庫主機供應商,有多少數據可以同時

相關問題