前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel5+mycat 报错 “Packets out of order”

Laravel5+mycat 报错 “Packets out of order”

作者头像
泥豆芽儿 MT
发布2024-07-05 15:17:55
100
发布2024-07-05 15:17:55
举报

背景

  • 近期对负责项目,配置了一套 主从复制的 MySQL 集群 使用了中间件 mycat 但测试发现,替换了原来的数据连接后,会出现 Packets out of order 的报错

同时注意到,有的框架代码中竟然也会失效,比如 controller 类中,获取 $request->all() 竟然变空了

分析、排查

  • 首先,切换 mycat 后,程序报错的一段源码如下:
代码语言:javascript
复制
[2024-07-04 10:48:58] local.ERROR: Packets out of order. Expected 1 received 5. Packet size=85 (SQL: select `cms_password_resets`.*  where `memberid` = 122 and `cms_password_resets`.`deleted_at` is null order by `id` desc) at D:\\phpstudy_pro\\WWW\\projzqb1b\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php:664, ErrorException(code: 0): Packets out of order. Expected 1 received 5. Packet size=85 at D:\\phpstudy_pro\\WWW\\projzqb1b\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php:332)
  • 另外一段报错源码如下 (也是跟数据库连接有关):
代码语言:javascript
复制
[2024-07-04 16:14:53] local.ERROR: Allowed memory size of 268435456 bytes exhausted (tried to allocate 842087056 bytes) {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Allowed memory size of 268435456 bytes exhausted (tried to allocate 842087056 bytes) at D:\\phpstudy_pro\\WWW\\projzqb1b\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php:330)
[stacktrace]

SQLSTATE[HY000]: General error: 1047 Unsupported statement
  • 根据百度经验,提示需要修改 mysql.cnf 中的 max_allowed_packet 参数 但是,发现不应该是这个问题,毕竟不使用 mycat 时不会出现问题
  • 继续查找发现,这个问题的原因很可能是数据库配置参数的 【预处理】问题 设置 database.php 中的 options 的预处理可以解决报错 (但是查询出来的数据全部转为了字符串)

因为上述的变动,代码中的判断,可能会出现问题,尤其是一些 数字类型的 === 比对

  • 希望得到的结果:同时满足 PDO::ATTR_EMULATE_PREPARES => true 和结果集数据类型不被隐式转换

解决方案:Laravel取出mysql数据全部被转成string类型问题

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 分析、排查
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档