我们有一个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()
始终返回正确的结果.
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();