我正在使用 Zend Framework 1.7.2、MySQL 和 MySQLi PDO 适配器。我想在给定操作期间调用多个存储过程。我发现在 Windows 上调用多个存储过程存在问题。如果您尝试它,您会收到以下错误消息:
SQLSTATE[HY000]:一般错误:2014 在其他无缓冲查询处于活动状态时无法执行查询。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只针对 mysql 运行,您可以通过设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性来启用查询缓冲。
我发现要解决这个问题,我可以在每次调用存储过程后关闭与数据库的连接:
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
//If on windows close the connection
$db->closeConnection();
}
这对我来说效果很好,但是,现在我想调用包装在事务中的多个存储过程。当然,在这种情况下关闭连接不是一种选择,因为它会导致打开的事务回滚。任何想法,如何解决这个问题和/或解决这个问题。