我们有一个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()总是返回正确的结果。
发布于 2015-12-09 14:30:26
嗯,原来这是由于新文物PHP插件。禁用它会立即修复所有返回零的FOUND_ROWS()查询的问题。
发布于 2015-12-07 12:28:45
新文物有问题
新文物应用还存在一些问题。NewRelic应用程序监视守护进程或扩展正在干扰FOUND_ROWS()的结果
当前的解决方法是=>
newrelic.transaction_tracer.explain_enabled = false如何使用FOUND_ROWS
还不清楚sql查询是什么。仍然在尝试我在PDO中使用FOUND_ROWS()的方法。检查您是否正在使用相同的方式,或者请提供一些您正在尝试的查询。
$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(); 发布于 2016-04-26 13:50:15
这是最近通知新文物,所以现在是一个问题,提交给开发人员。
您可以在explain_plans配置中禁用newrelic.ini,这将使您能够解决问题并使APM从newrelic.ini中保持报告,而不必完全删除它,然后您将只会在慢速查询报告页上丢失解释计划,否则您应该拥有所有的newrelic.ini功能,直到我们发布一个包含修复的代理为止。
如果您遇到一个您认为需要完全卸载新文物的问题,如果您是新文物客户,可以通过support.newrelic.com联系我们,如果您是新文物的客户,可以通过discuss.newrelic.com联系我们,因为我们将积极监测和参与我们的公共论坛,并根据需要提请我们的开发人员注意这一点。
感谢这篇文章中的所有好信息,我将把所有的信息反馈给大家,以帮助找到根源和解决这个问题。
https://stackoverflow.com/questions/34096406
复制相似问题