gatewayworker中使用tcp协议连接硬件设备获取数据报错解决办法!

运行后过段时间报错,

 Warning: Error while sending STMT_PREPARE packet. PID=1776 in D:\phpStudy\WWW\ap
i\mysql-master\src\Connection.php on line 1739

其内容在mysql类里面,

/**
* 关闭连接
*/
public function closeConnection()
{echo 88888;
$this->pdo = null;
}

加入打印8888后,打印错误为:


 Warning: PDO::prepare(): MySQL server has gone away in E:\work\xueshengka\api\my
 sql-master\src\Connection.php on line 1747

网上的解决办法:

由于我等待消息队列是一个长连接,而我在等待回调前有个数据库连接,数据库的wait_timeout=28800,所以只要下一条消息离上一条消息超过8小时,就会出现这个错误,我把wait_timeout设置成10,并且捕获异常,发现真实的报错是 MySQL server has gone away ,
所以只要在把等待回调前那次数据库连接主动close掉就可以解决问题

 

只说出了原因,并为解决错误,所以本人亲自试验,在执行完sql后关闭mysql连接,然后重新实例化sql类,执行新的连接数据库操作,结果。。。。。。并没有   卵用

最后弄了一天较劲脑汁,终于找到了解决办法那就是!!!!在Connection连接数据库类里面将报错行,$this->sQuery = @$this->pdo->prepare($query);

前面加上@,强行隐藏报错信息,问题得到了完美解决,开心一笑


 

转载于:https://www.cnblogs.com/yszr/p/8821754.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值