gpt4 book ai didi

php - MySQL/PDO FOUND_ROWS() 有时错误地返回 0

转载 作者:IT王子 更新时间:2023-10-28 23:50:03 26 4
gpt4 key购买 nike

我们有一个以前在 PHP 5.4 下运行的 laravel 4.1 应用程序,但是自从升级到 5.6.13(今天升级到 5.6.14)后,我注意到查询开始有时会返回 0 以获取 FOUND_ROWS( )。在我们的一些查询中,它似乎是断断续续的,但在其他查询中,它更像是一个永久性问题。

受影响最大的集合是带有子查询的集合。

我们正在使用 PDO(我们没有使用 laravel 模型,只是直接与其 PDO 对象交互)。 MySQL 在这个时间范围内也没有被修改过。

尝试了各种方法 - 一个建议是将跟踪模式设置为 0,但这并没有帮助。我尝试将 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 设置为 false,但是当您尝试选择 FOUND_ROWS() 时会导致 PDO 错误(现在无法获得确切的消息) .

没有回滚到 5.4(请上帝不要),我完全被卡住了......

直接在 MySQL 中运行这些查询,然后运行 ​​FOUND_ROWS() 总是返回正确的结果。

最佳答案

New Relic 有问题

新遗物申请有一些问题。 NewRelic 应用程序监控守护程序或扩展程序正在干扰 FOUND_ROWS()

的结果

当前的解决方法是 =>

newrelic.transaction_tracer.explain_enabled = false

如何使用 FOUND_ROWS

目前还不清楚您的 sql PDO 查询是什么。仍在尝试将 FOUND_ROWS() 与 PDO 一起使用。检查您是否使用相同的方式,或者请提供一些您正在尝试的问题。

$db = new PDO(DSN...); 
$db->setAttribute(array(PDO::MYSQL_USE_BUFFERED_QUERY=>FALSE));
$rs = $db->query('SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 5,15');
$rs1 = $db->query('SELECT FOUND_ROWS()');
$rowCount = (int) $rs1->fetchColumn();

关于php - MySQL/PDO FOUND_ROWS() 有时错误地返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com