【问题标题】:MySQL PDO general error 2014 when calling multiple stored proceduresMySQL PDO 调用多个存储过程时出现一般错误 2014
【发布时间】:2015-08-16 11:12:46
【问题描述】:

使用 PHP PDO 调用第二个存储过程时出现以下错误:

SQLSTATE[HY000]:一般错误:2014 在其他无缓冲查询处于活动状态时无法执行查询。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只针对 mysql 运行,您可以通过设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性来启用查询缓冲。

当您在请求更多数据之前没有使用fetchAll() 从 MySQL 取回所有数据时,通常会发生此错误。但是在这种情况下,我在所有存储过程调用上都使用 fetchAll。

有两种解决方法。在每次存储过程调用后使用 $stmt->closeCursor() 或使用 SELECT 查询替换存储过程。

存储过程是否存在使数据“无法获取”的问题?

【问题讨论】:

  • 请发布存储过程定义。您是否在其中一个结果集中选择 多个 结果集,但仅从一个结果集中选择 fetchAll(),而不使用 nextRowset()

标签: php mysql stored-procedures pdo


【解决方案1】:

我遇到了同样的问题,我使用了 PDO fetchAll, nextRowset(); 然后 closeCursor();这解决了我的问题。

【讨论】:

  • 能否请您写一个更详细的答案并附上解释,而不是只输入一个代码行。
  • 对不起,这实际上是我的第一篇文章。更多信息可以在nextRowset()找到。我有同样的问题,我使用了 PDO fetchAll, nextRowset() 然后 closeCursor() ,这解决了我的问题。
  • 请编辑您的答案,而不是在评论部分解释
猜你喜欢
  • 2020-02-15
  • 2015-10-05
  • 1970-01-01
  • 2018-02-09
  • 2018-11-13
  • 2017-05-17
  • 2012-10-05
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多