解决 General error: 2014 Cannot execute queries while other unbuffered queries are active.

一个简单的Mysql的更新,在服务器上出现了Error!

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.

问题到底发生在哪里呢。

1)服务器的mysql是5.1.8,而本地是5.2。结果本地完全没有问题,服务器却有问题。

2)所有检索的地方用的都是fetchall方法,显然不是像error提示那种问题。

3)出错之前都有一个特征,就是执行了用分号区分的多条语句。

大体上,我认为很有可能是在某些Mysql版本的bug。更新数据库代价和风险太大。那么如何解决呢。

试验了几种方法,下面这个方法是有效的

[sourcecode language=’php’]

……

//$this->PDOdb->execute();

$sth = $this->PDOdb->prepare($sql);
$sth->execute();
$sth->closeCursor();

[/sourcecode]