|-转 解决nodejs mysql Error: Connection lost The server closed the connection的两种方法
最近在学习node.js是发现在MySQL连接时出现问题,当过几个小时没有访问的MySQL的时候,MySQL自动断开连接,这个问题的原因是MySQL有一个wait_time当超过这个时间的时候连接会丢失,当你再去请求MySQL的时候会连接不上MySQL服务。先在整理一下解决这两个问题的方法:
一、先看抛出的异常:
二、第一中解决方法:当MySQL连接丢失时会抛出一个异常,这个异常的code就是‘PROTOCOL_CONNECTION_LOST’当捕捉的这个异常的时候就执行重新连接,这样就能解决连接丢失的问题:将这个连接封装成全局module,取名为‘mysqlconnection.js’代码如下:
var mysql = require(mysql); var mysql_config = { host: 127.0.0.1, user:root, password:123456, database:workstation }; function handleDisconnection() { var connection = mysql.createConnection(mysql_config); connection.connect(function(err) { if(err) { setTimeout(handleDisconnection(), 2000); } }); connection.on(error, function(err) { logger.error(db error, err); if(err.code === PROTOCOL_CONNECTION_LOST) { logger.error(db error执行重连:+err.message); handleDisconnection(); } else { throw err; } }); exports.connection = connection; } exports.handleDisconnection = handleDisconnection;
首先将这个连接封装成一个module,然后向外导出连接的方法‘handleDisconnection’和‘connection’;在你需要的地方全局调用handleDisconnection方法,具体不多说了,怕暴露智商,这里要特别注意的是,在使用连接‘connection’的时候,这个‘connection’不能作为全局变量,应该在每一次执行数据请求的时候去获取,不然不能获取到最新的‘connection’。...
浏览更多内容请先登录。
立即注册
分享的网址网站均收集自搜索引擎以及互联网,非查问网运营,查问网并没有提供其服务,请勿利用其做侵权以及违规行为。
更新于:2024-10-02 23:11:32
相关内容
Mysql错误1366的解决办法:Incorrect string value: '\xF0\x9F...' for ...
PHP Error: Maximum execution time of 30 seconds exceeded 解决方案
mysql在导入大数据库的时候,报错 Unknown MySQL server host ... ER...
Call to undefined function mysql_connect() 解决方法汇总
php报错 Error: Variable 'sql_mode' can't be set to the value of 'M...
推荐内容