MySQL 配置属性 (ATTR_EMULATE_PREPARES 为 true) 整型转字符串所遇问题

使用 sharding-proxy-3.1.0 数据库中间件坐mysql代理:
在laravel5.6和php7.2环境中配置 config/databases.php文件的 mysql选项如下:

            'options'  => [
                PDO::ATTR_EMULATE_PREPARES => false,
            ]

报错:
Packets out of order. Expected 1 received 27...

如果把以上配置改为如下:

            'options'  => [
                PDO::ATTR_EMULATE_PREPARES => true,// 模拟预处理语句
            ]

可以解决报错问题,但是查询出来的数据会把整型转成字符串,请问在laravel中如何同时解决这两个问题:
1、使用 sharding-proxy-3.1.0 中间件不报错
2、查询数据类型保持不变

yykpf
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案
5年前 评论
yykpf (楼主) 5年前
Bolt 4年前
讨论数量: 14
leo
5年前 评论
yykpf (楼主) 5年前
Bolt 4年前
ALMAS

缺少扩展 mysqlnd 也会引起整型转字符串

5年前 评论
lovecn 5年前
yykpf (楼主) 5年前

我也碰到这个问题了,楼主你最后怎么解决的?

4年前 评论
xiaoMaoLv 2年前
JerryBool (作者) 2年前
xiaoMaoLv 2年前

解决了没

4年前 评论
xiaoMaoLv 2年前
FC6666 1年前

PDO::ATTR_EMULATE_PREPARES => false 为什么设置false?

我通过pt-query-digest分析mysql的show.log日志时,发现很多administrator command: Prepare。好像是预处理相关的问题,还未解决 :joy:

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!