专栏首页移动端周边技术扩展node.js + express 后端项目小坑

node.js + express 后端项目小坑

能连上数据库,本地测试一切正常

项目上线没问题,pm2管理也正常

运行一段时间后出现以下错误

PROTOCOL_CONNECTION_LOST PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR

两天天以来都是凌晨断掉,重启项目又好了

原因

因为mysql连接断开,没有做异常处理,导致错误的代码继续在运行,导致node没有结束进程,所以node进程这些都好着,就是连不上数据库,重启服务就又恢复正常。

最后处理方案为:连接池

const mysql = require('mysql');

const pool = mysql.createPool({
   host: '16.22.80.98',
   user: 'root',
   password: 'xxxxx',
   database: 'xxxx',
   port: '3306'
})

exports.query = (sql, params = []) => {
   return new Promise((resolve, reject) => {
       pool.getConnection((err, connection) => {
           if (err) {
               return reject(err);
           }
           connection.query(sql, params, (err, result) => {
               //释放连接
               connection.release();
               if (err) {
                   return reject(err);
               }
               resolve(result);
           });
       });
   });
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux云服务器安装MySQL

    程序员不务正业
  • 深入理解iOS消息转发机制

    程序员不务正业
  • 关于优化IPA包大小问题

    1、压缩,使用imageOpitm等软件进行图片压缩处理 2、大图不要放到Assets.xcassets中

    程序员不务正业
  • 修改目录proc下的tcp_tw_recycle报“只读文件系统”

    该错误的原因是因为以只读(ro)方式mount了tcp_tw_recycle所在目录,比如因为目录“/proc/sys”以只读方式mount了:

    一见
  • 原 mysql开启日志记录

    用户1220053
  • 马云发布“NASA”计划畅想第五大经济体,雅虎“卖身”成功身价再缩水3.5亿美元 | 大数据24小时

    数据猿导读 马云发布“NASA”计划,愿望是要建成世界第五大经济体;雅虎“卖身”最终敲定,再次被Verizon压价3.5亿美元;呼和浩特市与九次方大数据合作,共...

    数据猿
  • 《青花瓷》 -Tataufo 版

    每个人都来自不同的星球,飘荡在自己熟悉的宇宙开始探索未知的旅行,也许你会成为最亮的星星平凡经历也能产生交集,寻常故事也会碰出新奇互相吸引的,是你独有的特质和魅力...

    半吊子全栈工匠
  • 快速学习-SpringMVC响应数据和结果视图

    controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。

    cwl_java
  • mycat-3:读写分离

    利用mycat读写分离 主库192.168.56.101,备库192.168.56.25. 3个数据库db1,db2,db3.主从同步见之前数据库目录。

    py3study
  • datetime.date(2014, 4, 25) is not JSON serializable

    # 背景 接口期望返回json格式数据,但数据存储在mysql中,先将mysql的数据转为dict,然后将dict转为json格式,然后就报这个错误了的,原因就...

    千往

扫码关注云+社区

领取腾讯云代金券