请选择 进入手机版 | 继续访问电脑版

默认
发表评论 11
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求助nodejs使用mysql做IM存储,查询出现数据库断连的问题
目前mysql数据库的连接操作逻辑是:先创建一个连接池,每次需要操作数据的时候创建一个connection,操作success后释放该连接,然后就会碰到下面的这个问题,说我数据库的query函数找不到,估计是断连了,请问有什么好的解决办法吗
Parser.js:80
        throw err; // Rethrow non-MySQL errors
        ^

TypeError: Cannot read property 'query' of undefined


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:IM开发 Nodejs
上一篇:求助服务端是netty-socketio,在切换运营商以及漫游情况下,出现信息丢失下一篇:求助Android版IM工程中引入一个扫一扫开源源码,编译错误的问题
推荐方案
评论 11
你仔细整理一下,回答下面这几个问题,我帮你看看:
  • 1)用的是nodejs的哪个连接池库?
  • 2)Mysql驱动是哪个库?
  • 3)nodejs是哪个版本?
  • 4)操作系统是什么?以及版本是多少?
  • 5)Mysql版本是多少?
  • 6)这个情况是在什么情况下发生的?(可以详细观察,一定要找出规律)
引用:JackJiang 发表于 2019-03-28 16:38
你仔细整理一下,回答下面这几个问题,我帮你看看:
  • 1)用的是nodejs的哪个连接池库?

  • 1)就是用npm安装的mysql库   var mysql = require('mysql');
    2)var mysql = require('mysql');
    3)v8.11.3
    4)操作系统win10
    5)"mysql": "^2.16.0"
    6)目前没有发现任何规律,任何一个访问mysql的接口操作都有可能触发,并且很频繁,只在今天发生,今天之前没碰到过(所以在排查是不是添加了哪个接口后出现的)
    引用:wangjiajia 发表于 2019-03-28 17:09
    1)就是用npm安装的mysql库   var mysql = require('mysql');
    2)var mysql = require('mysql');
    3)v8 ...

    同一份代码,不太可能昨天可以,今天却不可以。应该是什么东西发生了改动,你可以回忆一下。
    为样是猜不出来问题的。

    另外,尽量用低一点版本的windows搞这种服务端开发吧,win10还是太新了,很难保证Nodejs mysql这种服务端方案会在win10这种新式桌面系统上做好万全的稳定性测试的。
    引用:JackJiang 发表于 2019-03-28 16:38
    你仔细整理一下,回答下面这几个问题,我帮你看看:
  • 1)用的是nodejs的哪个连接池库?

  • 我还有个问题(为以后可能会踩的坑考虑)就是按我这样的逻辑去操作数据库会不会也有问题,连接池会不会自动失去连接?这里我没有做重连操作
    引用:wangjiajia 发表于 2019-03-28 17:15
    我还有个问题(为以后可能会踩的坑考虑)就是按我这样的逻辑去操作数据库会不会也有问题,连接池会不会自 ...

    你用的这个nodejs Mysql库里自带的连接池,它是有自动连接检测能力的,连接不通会自动从池中删除掉,所以不需要自已写什么重连操作。

    你这个mysql是用来存储IM的聊天记录的吗
    引用:JackJiang 发表于 2019-03-28 17:17
    你用的这个nodejs Mysql库里自带的连接池,它是有自动连接检测能力的,连接不通会自动从池中删除掉,所以 ...

    对的
    引用:JackJiang 发表于 2019-03-28 17:15
    同一份代码,不太可能昨天可以,今天却不可以。应该是什么东西发生了改动,你可以回忆一下。
    为样是猜不 ...

    那我再好好排查看看吧,按理说不会有这个问题。。。。
    谢谢解答!!
    引用:wangjiajia 发表于 2019-03-28 17:24
    那我再好好排查看看吧,按理说不会有这个问题。。。。
    谢谢解答!!

    是的,静下心回忆一下。有些时候,解决程序问题需要一些经验和灵感。
    你们用nodejs,是不是也是用了socket.io这个框架
    引用:JackJiang 发表于 2019-03-28 17:35
    你们用nodejs,是不是也是用了socket.io这个框架

    就用的你们的 MobileIMSDK-Web
    引用:wangjiajia 发表于 2019-03-28 17:42
    就用的你们的 MobileIMSDK-Web

    明白了。我的RainbowChat-Web产品里也有用了这个mysql连接池,挺正常的。 QQ截图20190328185825.png
    打赏楼主 ×
    使用微信打赏! 使用支付宝打赏!

    返回顶部