PDO unbuffered queries 多次查询错误
PDO unbuffered queries multiple query error
我在尝试执行 returns 大约 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
出现这种错误的原因是什么?
由于返回结果的大小,无法启用缓冲查询。
问题是 mysql 在给定时间只允许一个未完成的游标。通过使用 fetch() 方法而不消耗所有未决数据,您将游标保持打开状态。
推荐的方法是使用 fetchAll() 方法使用所有数据。另一种方法是使用 closeCursor() 方法。
我在尝试执行 returns 大约 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
出现这种错误的原因是什么?
由于返回结果的大小,无法启用缓冲查询。
问题是 mysql 在给定时间只允许一个未完成的游标。通过使用 fetch() 方法而不消耗所有未决数据,您将游标保持打开状态。
推荐的方法是使用 fetchAll() 方法使用所有数据。另一种方法是使用 closeCursor() 方法。