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对一次可以发送的数据量有限制
我正在尝试使用 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对一次可以发送的数据量有限制