NodeJS MYSQL ECONNREFUSED 偶发性发生

如何解决NodeJS MYSQL ECONNREFUSED 偶发性发生

我已经创建了我的第一个 API,并且正在实施错误检查和错误处理。

我访问了我的日志(我一直在运行)并遇到了这些问题,这些问题一直在停止我的 API 服务并在不同时间回复内部错误..

现在我的理解是有限的,但这些似乎是 MysqL 问题。 我已经阅读了一些关于连接池的内容,但我真的不知道这是否是我的问题,希望有人能指出我正确的方向。 我还在日志中获取了不是 API 调用内容

例如

[0mGET / [33m404[0m 43.046 ms - 42[0m
[0mGET /nmaplowercheck1610724839 [33m404[0m 0.680 ms - 42[0m
[0mPOST /sdk [33m404[0m 0.234 ms - 42[0m
[0mGET / [33m404[0m 58.176 ms - 42[0m
[0mGET /evox/about [33m404[0m 0.295 ms - 42[0m
[0mGET /HNAP1 [33m404[0m 0.299 ms - 42[0m
[0mGET / [33m404[0m 0.301 ms - 42[0m
[0mGET / [33m404[0m 0.289 ms - 42[0m
[0mGET /favicon.ico [33m404[0m 0.296 ms - 42[0m

我不知道这些东西是什么,虽然目前这只是一个测试 API..这是我需要关注的事情吗?

我的 MysqL 文件

const MysqL = require('MysqL');

config ={
    socketPath: '/var/lib/MysqL/MysqL.sock',host:'localhost',user: 'XXXXXXX',password: 'XXXXXXX',database : 'XXXXX_DB',multipleStatements: true
}


var MysqLConnection = MysqL.createConnection(config);


MysqLConnection.connect((err) =>{
    if(!err)
    console.log('DB connection success');
    
    else
    console.log('DB Failed \n Error: ' + JSON.stringify(err,undefined,2));

});


module.exports ={
     connection : MysqLConnection 
} 

当前正在处理的错误

[0mGET /favicon.ico [33m404[0m 0.296 ms - 42[0m
events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: Connection lost: The server closed the connection.
    at Protocol.end (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:112:13)
    at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:94:28)
    at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:526:10)
    at Socket.emit (events.js:203:15)
    at endReadableNT (_stream_readable.js:1145:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)
Emitted 'error' event at:
    at Connection._handleProtocolError (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:423:8)
    at Protocol.emit (events.js:198:13)
    at Protocol._delegateError (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:398:10)
    at Protocol.end (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:116:8)
    at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:94:28)
    [... lines matching original stack trace ...]
    at process._tickCallback (internal/process/next_tick.js:63:19)
error: Forever detected script exited with code: 1
error: Script restart attempt #2
DB Failed 
 Error: {
  "errno": "ECONNREFUSED","code": "ECONNREFUSED","syscall": "connect","address": "127.0.0.1","port": 3306,"fatal": true
}

发送错误,我猜这是由于第一个致命错误

[0mPOST /smsHx/ [31m501[0m 120.501 ms - 16[0m
{ Error: Cannot enqueue Query after Fatal error.
    at Protocol._validateEnqueue (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:212:16)
    at Protocol._enqueue (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:138:13)
    at Connection.query (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:198:25)
    at router.post (/home/XXXX/qudaAPI/api/routes/auth.js:81:16)
    at Layer.handle [as handle_request] (/home/XXXX/qudaAPI/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/XXXX/qudaAPI/node_modules/express/lib/router/route.js:137:13)
    at module.exports (/home/XXXX/qudaAPI/verifyQudaAPI.js:11:9)
    at Layer.handle [as handle_request] (/home/XXXX/qudaAPI/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/XXXX/qudaAPI/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/XXXX/qudaAPI/node_modules/express/lib/router/route.js:112:3) code: 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR',fatal: false }

最终错误

[0mGET /chemists/profileSettings [32m200[0m 18.903 ms - 502[0m
events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: Connection lost: The server closed the connection.
    at Protocol.end (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:112:13)
    at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:94:28)
    at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:526:10)
    at Socket.emit (events.js:203:15)
    at endReadableNT (_stream_readable.js:1145:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)
Emitted 'error' event at:
    at Connection._handleProtocolError (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:423:8)
    at Protocol.emit (events.js:198:13)
    at Protocol._delegateError (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:398:10)
    at Protocol.end (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:116:8)
    at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:94:28)
    [... lines matching original stack trace ...]
    at process._tickCallback (internal/process/next_tick.js:63:19)
error: Forever detected script exited with code: 1
error: Script restart attempt #1
events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1280:14)
    at listenInCluster (net.js:1328:12)
    at Server.listen (net.js:1415:7)
    at Function.listen (/home/XXXX/qudaAPI/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/home/XXXX/qudaAPI/qudaserver.js:4:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
Emitted 'error' event at:
    at emitErrorNT (net.js:1307:8)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJscore (internal/bootstrap/node.js:623:3)
error: Forever detected script exited with code: 1
error: Script restart attempt #2
events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1280:14)
    at listenInCluster (net.js:1328:12)
    at Server.listen (net.js:1415:7)
    at Function.listen (/home/XXXX/qudaAPI/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/home/XXXX/qudaAPI/qudaserver.js:4:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
Emitted 'error' event at:
    at emitErrorNT (net.js:1307:8)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJscore (internal/bootstrap/node.js:623:3)
error: Forever detected script exited with code: 1

现在 EADDRINUSE 似乎是节点仍在运行并且永远试图启动它......所以错误已经发生但它已经停止了节点但没有完全杀死它?

我很欣赏这些目前未处理的错误,是的,我正在编写错误处理程序,但这个连接关闭的事情似乎导致了问题,我想直接解决它!

非常感谢您的任何建议/方向/想法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?