my sql server has goneway

weoweo520

被这个东西 折腾很久了 :
我的查询代码 如下:

 $sql_r=Db::instance('ms')->select('tableNum,vStyle')->from('msr_info')->where("msrId='$search_mid'")->row(); 

经常出现这个问题 而且 是连接出现 也就是说 只要一旦 出现了这个问题 后面再查询 就还是 报这个错误。

我没有写过任何的脚本来Kill mysql 线程。

但是 我重启gatewayWorker start.php 就好了。出现这个错误的时候 web server 也能正常查询

那么应该不是我的mysql 服务的问题吧 。

这个问题 我该怎么解决?

3563 1 0
1个回答

walkor

DbConnection类遇到mysql gone away会自动重连一次,如果重连失败才会抛异常。
不清楚你这里为何第二次连数据库会失败。

你可以在onMessage回调后面加一句
Db::closeAll(); 试下。这样每次处理请求关闭数据库链接。

  • weoweo520 2016-09-01

    你意思是 每次在event 里onMessage 加Db::closeAll();吗? 那么每次不需要数据的 都会close了。 i/o量很大的情况下 性能会很影响吧? 那么如果我放在每次需要 Db::instance('ms')->select('tableNum,vStyle')->from('msr_info')->where("msrId='$search_mid'")->row(); 等查询操作前 做 Db::closeAll(); 再查询的话 会不会好一些呢? 有没有别的朋友 碰到我这种情况的? 数据库操作 是刚需操作啊。。能否有解决方案。。谢谢

  • walkor 2016-09-01

    你可以计算下每秒调用onMessage多少次,
    Db::closeAll();相对于业务来说,这点开销完全可以忽略。

年代过于久远,无法发表回答
🔝