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

好,我找到了答案。它只是认为数字海洋,数据库主机供应商,有多少数据可以同时

相关问题