Ben*_*rth 10 php mysql pdo sql-calc-found-rows laravel-4
我们有一个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
Run Code Online (Sandbox Code Playgroud)
目前尚不清楚你的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();
Run Code Online (Sandbox Code Playgroud)