[英]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.