繁体   English   中英

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

[英]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)
})

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM