当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《MySQL/PDOFOUND_ROWS()有时会错误地返回0》经验,为你挑选了1个好方法。

我们有一个laravel 4.1应用程序,曾经在PHP 5.4下运行,但是自从升级到5.6.13(今天到5.6.14)后,我注意到查询已经开始有时返回0 FOUND_ROWS().在我们的一些查询中,它似乎是间歇性的,但在其他问题上,它更像是一个永久性的问题.

受影响最大的集合是具有子查询的集合.

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

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

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

直接在MySQL中运行这些查询,然后运行FOUND_ROWS() 始终返回正确的结果.



1> Somnath Mulu..:
New Relic有问题

New Relic Application有一些问题.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();  

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有