MySQL-proxy代理导致PHP PDO::ATTR_EMULATE_PREPARES的预处理出错,MySQL报General error: 1243错误
背景:
用的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,会报错。
以及感谢如下参考:
http://www.thinkphp.cn/topic/47606.html
https://www.jb51.net/article/56612.htm
http://php.net/manual/zh/pdo.setattribute.php
https://www.kancloud.cn/manual/thinkphp5/211524
https://segmentfault.com/q/1010000012302149/a-1020000013069236
题外:
https://my.oschina.net/u/437615/blog/369481
MySQL-proxy代理导致PHP PDO::ATTR_EMULATE_PREPARES的预处理出错,MySQL报General error: 1243错误的更多相关文章
- mysql     proxy代理安装和配置
		
mysql proxy代理安装和配置 服务器说明: 192.168.1.219 mysql主库(主从复制) 192.168.1.177 mysql从库(主从复制) 192.168.1.202 ...
 - mysql开启skip-name-resolve 导致root@127.0.0.1(localhost)访问引发的ERROR 1045 (28000)错误解决方案
		
为什么配置skip-name-resolve? 由于mysql -h${ip} 远程访问速度过慢, mysql -uroot -p123456 根据网友经验(https://www.cnblogs.c ...
 - 密码正确 mysql无法登陆 red7.3 上安装mysql5.6后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passswd :yes)
		
集群需要mysql存储元数据,就在前几天还运行好好的,突然就进不去了......还是太菜,遇到的bug少. 引起这种故障的原因有很多......第一个坑比较多,大部分用户也就用第一个就可以解决问题,我 ...
 - MySQL Proxy 实现MySQLDB 读写分离
		
一.简述 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载平衡,故障.查询分析 ...
 - MySQL主从(MySQL proxy Lua读写分离设置,一主多从同步配置,分库分表方案)
		
Mysql Proxy Lua读写分离设置 一.读写分离说明 读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELE ...
 - [转载] 使用MySQL Proxy解决MySQL主从同步延迟
		
原文地址:http://koda.iteye.com/blog/682547 MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方面开发带来了极大的便利.但这种方式有个比较大的缺陷在 ...
 - 使用MySQL Proxy解决MySQL主从同步延迟
		
MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方面开发带来了极大的便利.但这种方式有个比较大的缺陷在于MySQL的同步机制 是依赖Slave主动向Master发请求来获取数据的, ...
 - (转)MySQL Proxy使用
		
转自: http://www.cnblogs.com/itech/archive/2011/09/22/2185365.html http://koda.iteye.com/blog/788862 h ...
 - MySQL Proxy使用
		
使用MySQL将读写请求转接到主从Server. 一 安装MySQL Proxy MySQL Proxy的二进制版非常方便,下载解压缩后即用. 解压缩的目录为: $mysql-proxy_instal ...
 
随机推荐
- SpringMVC+jquery.uploadify 上传文件
			
前言 以前用Asp.net MVC+uploadify上传文件,最近学习SpringMVC,所以就用SpringMVC+uploadify做个上传文件的demo. 刚开始用form表单的方式提交,在C ...
 - 探秘 Java 热部署
			
# 前言 在之前的 深入浅出 JVM ClassLoader 一文中,我们说可以通过修改默认的类加载器实现热部署,但在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能 ...
 - [转]微擎人人商城m()函数调用model方法
			
本文转自:http://yangjunwei.com/a/3177.html 微擎人人商城p()函数可内部调用任意插件的函数 http://yangjunwei.com/a/3216.html
 - Eclipse SVN 冲突的 介绍 及 四种解决方式
			
https://blog.csdn.net/diyu122222/article/details/79879376
 - c# 检测是否有Sql非法字符
			
/// <summary> /// 检测是否有Sql危险字符 /// </summary> /// <param name="str">要判断字 ...
 - 【Spring】25、Spring代理。 BeanNameAutoProxyCreator 与 ProxyFactoryBean
			
一般我们可以使用ProxyBeanFactory,并配置proxyInterfaces,target和interceptorNames实现,但如果需要代理的bean很多,无疑会对spring配置文件的 ...
 - JavaScript--fullPage.js插件
			
GitHub:https://github.com/alvarotrigo/fullPage.js FullPage.js是一个基于JQuery的插件,可以很方便的制作出全屏网站; 一 特点: 1.支 ...
 - inheritConstructorStealing.js
			
// 借用构造函数 // 其基本思路是在子类型构造函数的内部调用父类型的构造函数 function Person(name){ this.name = name; this.friends = [&q ...
 - 虚拟 DOM
			
虚拟DOM :virtual dom(以下简称vdom,是vue和react的核心),使用比较简单. 一,vdom是什么,为何会存在vdom 1,什么是vdom:用js模拟DOM结构,DOM操作非常‘ ...
 - JAVA 和.NET在安全功能的比较
			
以下转载于: http://www.it28.cn/ASPNET/825159.html 本文根据Denis Piliptchouk的文章翻译.摘录而来,有些术语翻译不太好理解,还请参考原文. 第一部 ...