日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2025/3/15 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php mysql-proxy报错_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,會報錯。

以及感謝如下參考:

題外:

總結

以上是生活随笔為你收集整理的php mysql-proxy报错_MySQL-proxy代理导致PHP PDO::ATTR_EMULATE_PREPARES的预处理出错,MySQL报General error: 1243错误...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。