背景:

用的ThinkPHP5的框架。(相比之前的3.2版本,版本5都用了PDO处理数据库)

症状:

SQLSTATE[HY000]: General error: 1243 Unknown prepared statement handler (1) given to mysqld_stmt_execute

具体的错误SQL,可能是任何一条正常的SQL。

不是每次必报错,是偶尔,但是出现频率较高。经过测试:1000次请求,可能会有30次错误。

错误排查:

本地测试,无问题(PHP直连MySQL)。

线上的ThinkPHP3.2系统,无问题(PHP通过MySQL-proxy代理连接数据库)。

然后排查得出怀疑对象,线上的PHP PDO与MySQL-proxy。

然后给ThinkPHP5的数据库配置加一条:

//数据库连接参数

'params' =>[

PDO::ATTR_CASE => PDO::CASE_LOWER,PDO::ATTR_EMULATE_PREPARES => true,],

线上线下测试,均未再出现此问题。

当然,这个解决方案并不是很好。预处理强制给PHP自身处理,不会更安全。但总归是找到了问题所在。

感谢一起讨论指点的朋友。

后记:用Mycat代理MySQL,无此报错。不过要注意一点:因为Mycat是JAVA开发的,所以对数据库里时间的字段,不能值为 0000-00-00 00:00:00,会报错。

以及感谢如下参考:

题外:

php mysql-proxy报错_MySQL-proxy代理导致PHP PDO::ATTR_EMULATE_PREPARES的预处理出错,MySQL报General error: 1243错误...相关推荐

  1. mysql 1243_MySQL-proxy代理导致PHP PDO::ATTR_EMULATE_PREPARES的预处理出错,MySQL报General error: 1243错误...

    背景: 用的ThinkPHP5的框架.(相比之前的3.2版本,版本5都用了PDO处理数据库) 症状: SQLSTATE[HY000]: General error: 1243 Unknown prep ...

  2. MySQL-proxy代理导致PHP PDO::ATTR_EMULATE_PREPARES的预处理出错,MySQL报General error: 1243错误...

    背景: 用的ThinkPHP5的框架.(相比之前的3.2版本,版本5都用了PDO处理数据库) 症状: 报错信息: SQLSTATE[HY000]: General error: 1243 Unknow ...

  3. mysql 双引号报错_MySQL 双引号导致ERROR 1054 (42S22) at line 1: Unknown column

    问题现象 发现监控进程获取MySQL数据的时候报错导致监控进程报错: mysql: [Warning] Using a password on the command line interface c ...

  4. mysql 外键报错_MySQL添加外键、删除外键方式,MySQL删除外键报错快速解决方案...

    外键的作用主要在于对各类表单进行约束,避免出现冗余数据及超出数据.那么,MySQL如何添加与删除外键?添加删除外键时报错是什么原因? 本文将从创建MySQL表单时添加外键.给已存在表单添加外键.删除外 ...

  5. mysql的count报错_Mysql报错注入原理分析count、rand、groupby

    0x00 疑问 一直在用mysql数据库报错注入方法,但为何会报错? 百度谷歌知乎了一番,发现大家都是把官网的结论发一下截图,然后执行sql语句证明一下结论,但是没有人去深入研究为什么rand不能和o ...

  6. mysql 3种报错_MySQL读取Binlog日志常见的3种错误-阿里云开发者社区

    MySQL读取Binlog日志常见的3种错误 mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4' 当我们在my. ...

  7. mysql安装开始报错_MYSQL安装报错 -- 出现Failed to find valid data directory.

    运行环境:windows10 数据库版本:mysql.8.0.12 安装方式:rpm包直接安装 问题描述: mysql初始化的时候找不到对应的数据库存储目录 报错代码: 2018-10-13T03:2 ...

  8. linux mysql stop 报错_mysql linux上安装使用

    安装启动 安装之前可以看下系统中有没有已经安装. 查看所有软件:dpkg -l 1.查看mysql安装的版本 mysql --version 2.mysql状态 service mysql statu ...

  9. 报错注入是什么?一看你就明白了。报错注入原理+步骤+实战案例

    「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「专栏简介」:此文章已录入专栏<网络安全快速入门> 报错注入 一. ...

最新文章

  1. NPOI读取Excel模板并向其中写入数据
  2. 信息传递服务器,AJAX的与服务器之间的信息传递原理(初学)
  3. 【转】30分钟学会UML类图
  4. 对比两个字符串相等_字符串匹配问题
  5. poj 1502 单源最短路径
  6. mips64高精度时钟引起ktime_get时间不准,导致饿狗故障原因分析【转】
  7. WPF 自己动手来做安装卸载程序
  8. js打开新窗口的方法总结
  9. QT tablewidget设置表头
  10. 别催更啦!手淘全链路性能优化下篇--容器极速之路
  11. java 可达性算法实现,垃圾标记阶段算法之可达性分析算法
  12. PlaySound error
  13. MySQL Front订单信息表,mysqlfront
  14. manacher魔板
  15. FPGA--有限状态机(FSM)的设计
  16. java graphics2d 乱码_Graphics2D 中文乱码
  17. 【卡尔曼滤波】我所理解的卡尔曼滤波
  18. 前端例程20210510:新拟物风格(Neumorphism)设计与实现
  19. Linux终端设备文件介绍
  20. 系统维护常用命令及工具

热门文章

  1. ARIMA模型之疏系数模型
  2. ubuntu16 黑主题_给Ubuntu 8.10安装超炫酷黑色新主题
  3. python实例变量不存在_python – peewee实例匹配查询不存在
  4. 手把手教你用原始方式上传项目至GitHub
  5. django系列5.1--ORM对数据库的操作
  6. element-ui el-radio 回显格式为中文 传值格式为数值
  7. Spring Cloud 之 Feign 使用HTTP请求远程服务
  8. 基于百度AI+jquery-webcam+servlet实现人脸识别登录,兼容各主流浏览器
  9. Python之路 day1 基础1 变量 for while 用户输入
  10. 深入理解JSON对象