一个简单的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]