PHP PDO Cannot execute queries while other unbuffered queries are active 错误的一种分析和处理

时间:2022-09-26 08:42:59

不过原因和分析过程了,直接说结论:



PDO 在同一次连接中, 如果调用 了 以下 MYSQL语句, 则:本语句成功,下一条语句必死,报错为:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.' in 


我测试产生此问题的语句包括:

    1. REPAIR TABLE ***

    2.OPTIMIZE TABLE ***

    3.CALL ***


前两个不太常用,但第三个很常用,调用 存储过程啊 (当然了,存储过程本身就不太常用 )


解决方案也很简单:

     调用以上功能 后, 重新生成PDO连接对象. 


后继事件:

    以上结论是我百度之后 没找到办法后,自行想的解决方案.   但~~~~, 同事*出去Google了一下, 直接 就有简单的解决方案

    别用pdo->exec,直接用pdo_query即可.