只要是先执行存储过程,执行是成功正确的,但执行完之后所有的数据库操作全部会出错,似乎是资源之类没释放.
我以前有个项目可以用mysqli,也遇到过类似问题,结果是在存储过程执行完后用mysqli_next_result()解决的.
我对底层不是很熟,顺着这个函数尝试过pdo的nextRowset() closeCursor()但都没解决.
请诸位帮帮我,多谢,现在这个项目涉及多种数据库且只能用PDO.
ZF返回的错误提示是:'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.'
我也试过设置在PDO执行前设置MYSQL_ATTR_USE_BUFFERED_QUERY这个属性但仍然无效.
我还在zf上找到了这个,和我的情况一样,但上面写:Fix Version/s: 1.5.0 ,应该在1.5里面解决了,我用的是1.5.1:
Can't execute multiple stored procedures with Pdo_Mysql
http://framework.zend.com/issues/browse/ZF-2101
哎,小弟愚钝,实在试过N次没办法了...