我目前正在使用 NodeJS 开发一个应用程序。
然而,经常服务器抛出这个错误,我无法与mysql交互。
[Error: read ETIMEDOUT]
code: 'ETIMEDOUT',
errno: 'ETIMEDOUT',
syscall: 'read',
fatal: true }
{ [Error: Cannot enqueue Query after fatal error.] code: 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR', fatal: false }
有人有办法解决这个问题吗?
Thanks
从你的问题来看,我假设你可以完美地使用你的数据库,但是这个错误经常在连接启动的给定时间后发生......
假设您正在使用node-mysql
来源 :https://github.com/felixge/node-mysql#error-handling https://github.com/felixge/node-mysql#error-handling
您的错误终止了与数据库的连接:
致命错误:布尔值,指示此错误是否是连接对象的终端错误。
如果错误不是来自 MySQL 协议操作,则不会定义此属性。
注意:“错误”事件在节点中比较特殊。如果它们发生时没有
连接监听器,打印堆栈跟踪,并且您的进程是
被杀了。
tl;dr:该模块不希望您处理静默故障。你
应始终为您的方法调用提供回调。如果你想
忽略此建议并抑制未处理的错误,您可以这样做:
// I am Chuck Norris:
connection.on('error', function() {});
您可以从中检查连接状态并在需要时执行重新连接。
您还可以尝试手动连接到 mysql 服务并更改请求超时:
wait_timeout” : the amount of seconds during inactivity that MySQL will wait before it will close a connection on a non-interactive connection in seconds.
http://www.serveridol.com/2012/04/13/mysql-interactive_timeout-vs-wait_timeout/ http://www.serveridol.com/2012/04/13/mysql-interactive_timeout-vs-wait_timeout/
https://support.rackspace.com/how-to/how-to-change-the-mysql-timeout-on-a-server/ https://support.rackspace.com/how-to/how-to-change-the-mysql-timeout-on-a-server/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)