Node.JS / MySQL - 错误:连接ECONNREFUSED - 随机发生

时间:2017-11-25 17:30:24

标签: mysql node.js database-connection connection-refused econnrefused

我尝试使用Node.JS连接到MySQL数据库,首先,它可以工作。然后,有点随意,它会出现以下错误:

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应用程序,一切都恢复正常......直到再次,随机,错误再次弹出。我测试了它是否仅在我尝试与数据库交互时出错,并且我发现它确实随机吐出了这个错误。有时我可以很好地与DB交互,有时候我不能。我觉得这个错误很奇怪,所以如果有人知道这个问题,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您的应用无法连接到您的mysql实例,则会导致此问题。您可以捕获这些错误,因此不会通过侦听mysql error事件抛出它们。

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

即使mysql在3306上运行,也可能是您的连接已超出连接,或者可能是临时网络问题。您可以使用show variables like "max_connections"检查mysql,您可能需要增加它。此外,请确保您的应用仅在启动时建立连接,而不是在路线或其他动态区域内建立连接。但是,当我遇到这种情况时,通常是由于应用服务器和数据库服务器之间的网络连接不良。