不过原因和分析过程了,直接说结论:
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即可.