【问题标题】:PDO unbuffered queries multiple query errorPDO 无缓冲查询多个查询错误
【发布时间】:2015-02-26 15:17:23
【问题描述】:

尝试执行返回大约 100,000 行的查询时出现错误:

Fatal error: Uncaught exception 'PDOException' with message '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.'

该错误似乎表明多个查询同时运行,但在检查 MySQL 日志时并非如此:

150226 15:10:28     3 Connect   root@localhost on Project
            3 Query SELECT * FROM Data WHERE posted > '2015-02-01 14:52:28' AND posted < '2015-02-19 18:36:56'
150226 15:11:00     3 Quit  

出现这种错误的原因是什么?

由于返回结果的大小,不能选择启用缓冲查询。

【问题讨论】:

  • 一些php代码可能会有帮助

标签: php mysql pdo mysqli


【解决方案1】:

问题是mysql在给定时间只允许一个未完成的游标。通过使用 fetch() 方法而不使用所有待处理的数据,您将打开一个游标。

推荐的方法是使用 fetchAll() 方法消耗所有数据。另一种方法是使用 closeCursor() 方法。

【讨论】:

    猜你喜欢
    • 2010-10-24
    • 2011-06-26
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2021-03-17
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多