1

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

4

2 回答 2

0

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

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

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

于 2017-11-25T18:42:07.670 回答
-1

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

于 2017-11-26T04:09:08.917 回答