我正在运行一个通过 node-mysql 模块连接到 MySQL 的 Node 服务器。连接和查询 MySQL 最初工作得很好,没有任何错误,但是,让 Node 服务器空闲几个小时后的第一个查询会导致错误。错误是熟悉的read ECONNRESET
,来自 node-mysql 模块的深处。
堆栈跟踪(请注意,跟踪的三个条目属于我的应用程序的错误报告代码):
Error
at exports.Error.utils.createClass.init (D:\home\site\wwwroot\errors.js:180:16)
at new newclass (D:\home\site\wwwroot\utils.js:68:14)
at Query._callback (D:\home\site\wwwroot\db.js:281:21)
at Query.Sequence.end (D:\home\site\wwwroot\node_modules\mysql\lib\protocol\sequences\Sequence.js:78:24)
at Protocol.handleNetworkError (D:\home\site\wwwroot\node_modules\mysql\lib\protocol\Protocol.js:271:14)
at PoolConnection.Connection._handleNetworkError (D:\home\site\wwwroot\node_modules\mysql\lib\Connection.js:269:18)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:441:14
at process._tickCallback (node.js:415:13)
此错误发生在我的云节点服务器和 MySQL 服务器以及两者的本地设置上。
我的问题:
这个问题是否似乎是 Node 与我的 MySQL 服务器的连接断开,可能是由于连接生命周期限制?
当使用连接池时,node-mysql 应该优雅地处理断开连接并将它们从池中删除。在我进行查询之前是否不知道断开连接,从而使错误不可避免?
考虑到我在其他 StackOverflow 帖子中经常看到“读取 ECONNRESET”错误,我是否应该从 MySQL 中寻找其他地方来诊断问题?
更新:经过更多浏览,我认为我的问题与此问题重复。看来他的连接也断开了,但没有人建议如何保持连接活动或如何解决第一次查询失败之外的错误。