MySQL 有时会错误地为 count(*) 返回 0

标签 mysql count

我维护着一个对论坛线程进行分页的论坛。为了确定线程有多少页,我执行查询

SELECT COUNT(*) AS `numrows`
    FROM `forum_posts`
    WHERE `thread_id` = '3004'
    AND `deleted` = 0;

然后得到结果,除以每页的帖子数,然后四舍五入。上面的查询偶尔会无缘无故地返回 0 结果,这会导致分页中断。通常,问题会在几分钟内“神奇地”自行修复,所以到目前为止,即使诊断它也是一段有趣的旅程。或者更确切地说,它可以持续几个小时,但在我登录以尝试查看发生了什么后的几分钟内似乎神奇地自行修复了(尽管这可能是我的想象)。

当问题出现时,所有 此类查询都会为 numrows 返回 0,而当它突然自行解决时,上述查询又开始返回正确的值。

可能导致此问题的原因是什么?

最佳答案

我们也遇到过这个问题。它也发生在 mysql 客户端(不是通过代码)。好像是mysql的bug。是索引合并交集造成的

您可以在每个 session 中将其关闭并尝试 SET SESSION optimizer_switch="index_merge_intersection=off";

或者在你的my.cnf中全局设置

[mysqld] optimizer_switch=index_merge_intersection=off

在此处提交错误报告

http://bugs.mysql.com/bug.php?id=81031

关于MySQL 有时会错误地为 count(*) 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32973835/

相关文章:

php - 多个 AND 的组合,NOT IN 条件在 php mysql 查询中不能正常工作

php - 使用 PDO 有效地获取带有 WHERE 子句的 SELECT 查询返回的行数

Mysql,仅使用一个冒号创建一个 DISTINCT,同时显示另一个冒号

mySQL 计数并从表中获取最大值

mysql - 这是否足够,或者我是否有竞争条件?

javascript - 如何将 SQL 数据库中的数据显示到 PHP/HTML 表中

php - WHILE 中的 IF 语句不起作用

javascript - 在 ViewPort 中计数

mysql - 除以子查询或在 SQL 中查找类别的比例

mysql - 错误 1126 (HY000) : Can't open shared library 'lib_mysqludf_sys.so' (errno: 193 )