TL; DR 我不知道如何让错误消失,我不想再次知道我可以使用fetchAll()
和/或转弯缓冲查询。
关于这个错误的又一个问题:
SQLSTATE [HY000]:常规错误:2014在其他未缓冲的查询处于活动状态时无法执行查询。
t h e r e a r e关于此的无数帖子,他们很棒,但那不是我的兴趣。
我不想让错误消失,我想知道是否有办法识别哪些无缓存的查询仍处于活动状态?
由于我只使用MySQL,而我的应用程序只能运行MySQL,我当然可以
考虑使用PDOStatement :: fetchAll()。或者,如果您的代码只是针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲
但这不是重点。
man page for pdo似乎没有办法执行此操作,inTransaction()
方法不适用,因为我没有使用交易。
如果它可以提供帮助,所有查询都是预备语句,只需准备好sql就可以帮助我找出哪些查询没有被完整提取。
var_dumping PDO对象产生一个不太有用的结果:
object(PDO)#31 (0) { }
我的梦想是能够使用这样的东西:
var_dump($pdo->showActiveQueries());
会返回类似
的内容array(2) { [0]=> string(19) "SELECT foo FROM bar" [1]=> string(21) "SELECT 2foo FROM 2bar" }
答案 0 :(得分:1)
我的理解是你一次只能做一个无缓冲的查询,所以如果是这样的话,那么它不是你得到错误之前运行的最后一个查询吗?< / p>
如果您正在使用某种数据库抽象,那么您可以抓住最后一个成功的查询,这将是导致错误的查询。
您是否尝试关闭在创建新查询之前运行的上一个查询的光标? http://us.php.net/manual/en/pdostatement.closecursor.php
PDOStatement::closeCursor()
释放与服务器的连接,以便可以发出其他SQL语句,但使语句处于使其能够再次执行的状态。