首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL / PDO FOUND_ROWS()有时错误地返回0

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

Stack Overflow用户
提问于 2015-12-04 19:55:38
回答 4查看 1.1K关注 0票数 10

我们有一个Laravel4.1应用程序,它以前在PHP5.4下运行,但是自从升级到5.6.13 (今天升级到5.6.14)之后,我注意到查询有时已经开始返回FOUND_ROWS() 0。在我们的一些查询中,这似乎是断断续续的,但在另一些查询中,这更像是一个永久性的问题。

受影响最大的集是那些具有子查询的集。

我们使用的是PDO (我们没有使用laravel模型,只是直接与它的PDO对象交互)。在这个时间框架内,MySQL也没有被修改。

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

除非回到5.4 (求你上帝不要),我完全被困住了.

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-09 14:30:26

嗯,原来这是由于新文物PHP插件。禁用它会立即修复所有返回零的FOUND_ROWS()查询的问题。

票数 0
EN

Stack Overflow用户

发布于 2015-12-07 12:28:45

新文物有问题

新文物应用还存在一些问题。NewRelic应用程序监视守护进程或扩展正在干扰FOUND_ROWS()的结果

当前的解决方法是=>

代码语言:javascript
复制
newrelic.transaction_tracer.explain_enabled = false

如何使用FOUND_ROWS

还不清楚sql查询是什么。仍然在尝试我在PDO中使用FOUND_ROWS()的方法。检查您是否正在使用相同的方式,或者请提供一些您正在尝试的查询。

代码语言:javascript
复制
$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();  
票数 5
EN

Stack Overflow用户

发布于 2016-04-26 13:50:15

这是最近通知新文物,所以现在是一个问题,提交给开发人员。

您可以在explain_plans配置中禁用newrelic.ini,这将使您能够解决问题并使APM从newrelic.ini中保持报告,而不必完全删除它,然后您将只会在慢速查询报告页上丢失解释计划,否则您应该拥有所有的newrelic.ini功能,直到我们发布一个包含修复的代理为止。

如果您遇到一个您认为需要完全卸载新文物的问题,如果您是新文物客户,可以通过support.newrelic.com联系我们,如果您是新文物的客户,可以通过discuss.newrelic.com联系我们,因为我们将积极监测和参与我们的公共论坛,并根据需要提请我们的开发人员注意这一点。

感谢这篇文章中的所有好信息,我将把所有的信息反馈给大家,以帮助找到根源和解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34096406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档