Node.JS/MySQL - Error: connect ECONNREFUSED - happening at random

Node.JS/MySQL - Error: connect ECONNREFUSED - happening at random

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

这是因为您的应用无法连接到您的 mysql 实例。您可以通过侦听 mysql error 事件捕获这些错误,这样它们就不会被抛出。

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

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

好的,我找到了答案。只是数据库托管商Digital Ocean对一次可以发送的数据量有限制