大家好,
自从大约一两周前的最近一次升级后,仪表盘上的新帖子统计信息出现了问题。它现在不再显示任何内容。这个问题只发生在我这里,还是一个普遍的bug?我在这里搜索后没有找到相关信息。
此致
大家好,
自从大约一两周前的最近一次升级后,仪表盘上的新帖子统计信息出现了问题。它现在不再显示任何内容。这个问题只发生在我这里,还是一个普遍的bug?我在这里搜索后没有找到相关信息。
此致
抱歉,我之前没有说清楚,这是截图:
我今晚更新到了 05685d430f。
如果我没记错的话,大概有一两周了,我目前大约每五天升级一次。
是的,目前流量不大,但我们有新帖子。
我还点击并选择了今天的年份。那里也没有数据。
首先想到的是“数据不足”,但我会将其告知可以帮助调试的员工xp团队。
如果您访问 https://YOURSITE.COM/admin/reports/posts?end_date=2025-02-17&start_date=2025-01-17 的完整报告页面,是否能显示任何数据,调整日期/过滤器后?在加载此页面或仪表板时,您是否在 https://YOURSITE.COM/logs 的日志中或 Chrome DevTools 的 Network 选项卡中看到任何错误?
不,那里也什么都没有。我也可以调整开始和结束日期,但没有变化。
没有,什么都没有。只有一些弃用通知,与统计数据无关(根据时间判断)。
确实有错误。当我加载页面时,有9个错误,随着时间的推移会更多。
这有帮助吗?我应该复制粘贴(文本)其中一个/所有这些错误吗?
确实,我也遇到了这种情况。我的社区也未能正确显示帖子计数。
不正确还是像这里一样什么都没有?
做了一些研究,似乎 domQueryService 错误来自 Bitwarden Chrome 扩展,它们不太可能引起问题。mini-profiler 错误可以忽略。
fingerprint-report 错误来自 https://github.com/discourse/discourse-fingerprint,虽然这是一个我们需要修复的问题,但它似乎并没有阻止 Posts report 在我本地加载。
body_tag_1.js 文件是其他人有时会在 Discourse 上遇到问题的 Lost ability to scroll through HA community site - community-feedback - Home Assistant Community 。您是否安装了广告拦截器?如果是,请尝试禁用它们。如果不是或无效,请尝试启用安全模式 Using Safe Mode to troubleshoot issues with themes and plugins 并查看是否可以加载页面,如果可以,则表明是插件或主题问题。
最后,尝试加载报告的 JSON 并查看您是否在此处获得任何结果:
我已经禁用了 Opera 中自带的广告拦截器,我正在电脑上使用该浏览器。我还使用了 Pi-hole 和多个阻止列表。
但是:这些问题也出现在我的 iPad 的 Discourse 应用以及其他网络(包括移动数据)上。所以不是广告拦截器之类的问题。
我可以,但今天不行了。 ![]()
当然:
{"reports":[{"type":"posts","title":"Beiträge","xaxis":"Tag","yaxis":"Anzahl neuer Beiträge","description":"Neue Beiträge, die in dieser Zeit erstellt wurden","description_link":null,"data":[],"start_date":"2025-01-18T00:00:00Z","end_date":"2025-02-18T23:59:59Z","prev_data":null,"prev_start_date":"2024-12-17T00:00:00Z","prev_end_date":"2025-01-18T00:00:00Z","prev30Days":null,"dates_filtering":true,"report_key":"reports:posts:20250118:20250218:[:prev_period]:50:4","primary_color":"rgba(113,184,254,1)","secondary_color":"rgba(113,184,254,0.1)","available_filters":[{"id":"category","type":"category","default":null}],"labels":[{"type":"date","property":"x","title":"Tag"},{"type":"number","property":"y","title":"Anzahl"}],"average":false,"percent":false,"higher_is_better":true,"modes":["chart","table"],"prev_period":0,"limit":50}]}
既然这什么都没显示,如果我没理解错的话,那么安全模式还有意义吗?
好的,谢谢,这很有帮助,它表明数据本身丢失了,而不是前端有什么错误 ![]()
此报告背后的 SQL 查询非常简单,如果您可以访问 Data Explorer 或直接访问数据库,您可以尝试运行并调整此查询,看看它是否能为您提供任何数据:
SELECT
COUNT(*) AS "count_all",
date(posts.created_at) AS "date_posts_created_at"
FROM
"posts"
INNER JOIN "topics" ON "topics"."deleted_at" IS NULL
AND "topics"."id" = "posts"."topic_id"
WHERE
"posts"."deleted_at" IS NULL
AND (
topics.archetype <> 'private_message'
)
AND (
posts.created_at >= '2025-02-01'
AND posts.created_at <= '2025-02-28'
)
AND "posts"."post_type" = 1
GROUP BY
date(posts.created_at)
ORDER BY
date(posts.created_at)
这是报告代码本身:
恐怕在无法访问您的站点进行数据库挖掘的情况下,进一步调试会有些棘手。
Data Explorer 中的查询返回了数据:
抱歉 Roi,这件事被忽略了。我猜报告代码本身一定有问题?discourse/app/models/concerns/reports/posts.rb at 8596aa34c46071eb42ffbb9e19ad733d1765578e · discourse/discourse · GitHub 。
您是否可以访问您网站的 rails 控制台?如果可以,请尝试以下操作,看看是否能获得任何数据:
Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data
这将输出它运行的 SQL 查询,因此那里可能会有更多线索。
没关系!在管理员仪表板上看起来不完美,但它不像其他错误那样关键。
是的。
嗯,我这样做对吗?
root@prometheus-discourse-sidemount:/var/www/discourse# rails c
插件名称是 'discourse-docs',但插件目录名为 'discourse-knowledge-explorer'
插件名称是 'discourse-user-notes',但插件目录名为 'discourse-staff-notes'
[1] pry(main)> Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data
=> []
[2] pry(main)>
答案是空的。这可以解释管理员仪表板上的空框。但您写道答案中也应该有一个 SQL 语句?
啊抱歉,也许我只看到它是因为我在本地运行它。试试这个:
MethodProfiler.output_sql_to_stderr!
Report.find("posts", start_date: 4.weeks.ago, end_date: Time.zone.now).data
现在你会看到很多查询的噪音,但最后的几个查询将是报告中的查询:
好的,噪音更大了。
这是您要找的,还是您需要上面更多的内容?
debugsql (sql): SELECT COUNT(*) AS "count_all", date(posts.created_at) AS "date_posts_created_at" FROM "posts" INNER JOIN "topics" ON "topics"."deleted_at" IS NULL AND "topics"."id" = "posts"."topic_id" WHERE "posts"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND NOT ((topics.category_id IN (NULL))) AND (posts.created_at >= '2025-02-03 06:00:45.160432' AND posts.created_at <= '2025-03-03 06:00:45.160586') AND "posts"."post_type" = 1 GROUP BY date(posts.created_at) ORDER BY date(posts.created_at)
debugsql (sec): 0.001
debugsql (sql): SELECT "category_custom_fields"."category_id" FROM "category_custom_fields" WHERE "category_custom_fields"."name" = 'private_topics_enabled'
debugsql (sec): 0.0
debugsql (sql): SELECT COUNT(*) FROM "posts" INNER JOIN "topics" ON "topics"."deleted_at" IS NULL AND "topics"."id" = "posts"."topic_id" WHERE "posts"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND NOT ((topics.category_id IN (NULL))) AND "posts"."post_type" = 1
debugsql (sec): 0.0
debugsql (sql): SELECT COUNT(*) FROM "posts" INNER JOIN "topics" ON "topics"."deleted_at" IS NULL AND "topics"."id" = "posts"."topic_id" WHERE "posts"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND NOT ((topics.category_id IN (NULL))) AND "posts"."post_type" = 1 AND (posts.created_at >= '2025-01-04 06:00:45.160432' and posts.created_at < '2025-02-03 06:00:45.160432')
debugsql (sec): 0.0
debugsql (sql): COMMIT
debugsql (sec): 0.0
=> []
是的,这正是我需要的
让我印象深刻的部分是 AND NOT ((topics.category_id IN (NULL)));我没有在上面截图的查询中看到它。这将排除所有没有分类的主题,根据您的论坛设置,这可能会有很多?
我没有在代码中看到它来自哪里。下一步,我将尝试在 Data Explorer 中执行此操作:
SELECT
COUNT(*) AS "count_all",
date(posts.created_at) AS "date_posts_created_at"
FROM
"posts"
INNER JOIN "topics" ON "topics"."deleted_at" IS NULL
AND "topics"."id" = "posts"."topic_id"
WHERE
"posts"."deleted_at" IS NULL
AND (
topics.archetype <> 'private_message'
)
AND (
posts.created_at >= '2025-02-03 06:00:45.160432'
AND posts.created_at <= '2025-03-03 06:00:45.160586'
)
AND "posts"."post_type" = 1
GROUP BY
date(posts.created_at)
ORDER BY
date(posts.created_at)
(我在这里删除了 AND NOT 子句),看看您是否能得到任何结果。如果我在本地运行此代码,我会得到:
count_all | date_posts_created_at
-----------+-----------------------
1 | 2025-02-03
8 | 2025-02-04
7 | 2025-02-05
1 | 2025-02-06
7 | 2025-02-12
4 | 2025-02-26
而如果我保留您的查询显示的 category_id 子句,我会得到没有数据。
是的,我真的不确定
可能性很小,但会不会是某个插件添加/修改了什么?
你用了什么插件?上面第一个查询(带有 count_all 的那个)来自这里:
如果在控制台中调用这个仍然会添加 category_id IN (NULL) 子句,那真的很奇怪:
Post.public_posts_count_per_day(4.weeks.ago, Time.zone.now)