问题标签 [unbuffered-queries]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 使用 PDO 执行 exec 时,我得到 2014 无法执行查询,而其他无缓冲查询处于活动状态
我正在PDO::exec
对多个更新执行命令:
我在事务中执行此操作,并且不断收到以下错误:
SQLSTATE[HY000]:一般错误:2014 在其他无缓冲查询处于活动状态时无法执行查询。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只针对 mysql 运行,您可以通过设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性来启用查询缓冲。
这些是唯一的查询/ies
php - 使用 MySQLi 进行无缓冲查询?
MySQLi 查询是否无缓冲?如果没有,有没有办法像非 MySQLi 一样进行无缓冲查询mysql_unbuffered_query()
?
php - PDO 连接器无法在具有多个实例的页面上使用
在我的 php 页面的顶部,我包含了一个连接脚本,该脚本由以下代码调用:
连接器.php
然后,我会根据需要在我的页面上进行所有后续调用。然而,特别是在一页上,我最初调用了一个 MySQL 存储过程:
我的存储过程没有问题,但是当我尝试进行任何后续调用时,在页面下方,我得到了通常的 PDO Mysql 无缓冲查询错误:
致命错误:未捕获异常 'PDOException' 并带有消息 'SQLSTATE[HY000]:一般错误:2014 无法在其他无缓冲查询处于活动状态时执行查询。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只针对 mysql 运行,您可以通过设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性来启用查询缓冲。在 C:\page.php:261 堆栈跟踪:#0 C:\page.php(261): PDOStatement->execute(Array) #1 {main} 在第 261 行的 C:\page.php 中抛出
是的,我尝试过使用 FetchAll,但不,我不想使用 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性,因为我们可能会在稍后关闭 MySQL,而且我不希望基于每个 DB 进行重建(更不用说当我确实包含它时它不起作用)。
任何想法为什么会发生这种情况?我可以在每次 DB 调用之前“包含”connector.php 文件,但这似乎是重复的,我必须为每个语句设置 $db->NULL。
注意:这似乎只影响调用存储过程的页面。有任何想法吗?
注意:这是在运行 Apache 2.2.14、PHP 5.3.1 的 XAMPP 1.7.3 的 Windows 机器上运行的
php - 使用 mysql_unbuffered_query 的多个连接
是否可以通过打开第二个连接来解决 mysql_unbuffered_query() 一次运行一个查询的限制?
例如,以下代码给了我错误:
mysql_select_db():在没有首先从先前的无缓冲查询中获取所有行的情况下调用的函数
最后输出的两个 print_r():Resource id #637Resource id #639
DbManager 是一个老梨数据访问层
注意:我会使用 mysql_unbuffered_query 标签,但我最近打开了一个赏金,将我置于“创建新标签特权”之下。
php - MySQL “一劳永逸” INSERT / UPDATE / DELETE - mysql_unbuffered_query 使用可取吗?
我们有很多我们认为“一劳永逸”的查询。
从某种意义上说,这些只是记录插入、更新等。不那么重要的东西,以及用户看到的前端从未使用过的数据。
这听起来像是mysql_unbuffered_query
.
这是可取的吗?
我们正在使用 innodb,所以使用类似的东西INSERT DELAYED
是不可能的。
谢谢!
php - Zend_Db 和无缓冲查询
我有一个长时间运行的查询,我尝试通过一个无缓冲的 pdo 语句来获取它(参见下一个代码)。但是当我“执行”无缓冲查询,或者我执行“fetchAll”时,时间(另见下文)并没有太大变化......我认为无缓冲只是执行查询并给我一个光标?
get_db 函数返回一个 Zend_Db 对象。
和时间:
如您所见,获取所有变量和无缓冲变量几乎没有区别。
我在这里可能做错了什么?
谢谢!
php - 多次迭代 mysqli 无缓冲查询结果
问题:
我有一个返回大型结果集的查询。它太大而不能带入 PHP。我收到致命的内存最大错误,无法增加内存限制。无缓冲查询
我需要多次迭代数组,但 mysqli_data_seek 不适用于无缓冲查询。mysqli_result::data_seek
如果您有其他满足这些要求的解决方案,我将接受它: - 不尝试在单个查询中加入结果(花费太长时间) - 不对另一个查询中的每个结果运行任何查询(查询太多,也需要长,减慢系统)
如果您需要更多信息,请发表评论。
谢谢你。
php - mysql无缓冲查询锁定不锁定
显然根据这个:http ://www.tuxradar.com/practicalphp/9/4/9
在发出对 mysql_unbuffered_query() 的调用和处理最后一行之间,该表仍然被 MySQL 锁定并且不能被其他查询写入。如果您打算对每一行进行冗长的处理,那就不好了。
所以我试图模拟它。请注意,使用 MYSQLI_USE_RESULT 与使用无缓冲查询同义。另请注意,表中有大约 60000 个现有条目。
所以我有这个代码:
但是随后代码设法将新行插入到表中,而且即使该表应该被锁定,直到我完成所有行的获取,也可以很好地获取该新表。
为什么会这样?我错过了什么吗?
php - 什么导致 PDO 错误在其他无缓冲查询处于活动状态时无法执行查询?
我有以下代码:
但是,由于某种原因,在执行第二个准备好的语句时出现以下错误:
致命错误:未捕获的异常“PDOException”,带有消息“SQLSTATE [HY000]”:一般错误:2014 无法执行查询,而其他无缓冲查询处于活动状态。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只针对 mysql 运行,您可以通过设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性来启用查询缓冲。
我知道这个错误意味着什么以及如何修复它(要么做unset($stmt);
要么$stmt->closeCursor();
),所以我不是在寻找如何让它工作的解决方案。据我了解,这通常是由做fetch
而fetchAll
不是获取所有结果引起的。但是在这种情况下,只有一个结果并且正在被获取。另外,如果我只执行第一个准备好的语句一次,则不会发生错误。它仅在第一条语句执行两次时发生。它也只发生在PDO::ATTR_EMULATE_PREPARES
is时false
。
所以我的问题是,在这种情况下导致上述错误发生的原因是什么?它似乎与我执行过的任何其他查询没有任何不同。
我已经在两个 Ubuntu 13.10 服务器 Debian 和 CentOS 上对此进行了测试,并且都使用默认软件包产生了相同的错误。
编辑:
回答 Ryan Vincent 的评论,我是一个完整的 mysqli 菜鸟,但我相信我下面的内容大致相当于上面的例子。如果我错了,请纠正我。但是它不会产生错误,因此它似乎是一个 PDO-only 错误:
php - 使用 php pdo 在 MSSQL 中的无缓冲查询
我正在为以下常量寻找一个MSSQL替代方案
MYSQL_ATTR_USE_BUFFERED_QUERY
以上设置适用于 MYSQL 数据库。MSSQL 是否有任何常量。如果不是,我如何使用 MSSQL 实现无缓冲概念
PHP PDO