版主移动帖子时出现 500 内部错误,如何排查

大家好,

如果我们尝试将帖子从一个线程移动到另一个线程,有时会收到“500 内部服务器错误”。

是否有教程可以指导我们排查此类问题?我在哪里可以找到日志文件以获取有关该问题的详细信息?

感谢每一位回复 :slight_smile:

问候,Ronny

我们在移动帖子时也遇到了 500 错误。我通过将一个帖子移动到另一个主题,然后尝试将其移回原始主题成功触发了该问题。

以下是详细信息:

SyntaxError: Unexpected token < in JSON at position 0
    at Function.parse [as parseJSON] (<anonymous>)
    at t (_application-1aa5dba826bc3ed623e07f37fc542db9746ecf4a5fcf6b519e5921036bface8d.js:12468)
    at _application-1aa5dba826bc3ed623e07f37fc542db9746ecf4a5fcf6b519e5921036bface8d.js:34707
    at f (_ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:70136)
    at T (_ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:70309)
    at E (_ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:70295)
    at y (_ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:70231)
    at t.invoke (_ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:64637)
    at e.t.flush (_ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:64527)
    at e.t.flush (_ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:64731)

感谢您的回复!

在此期间,我发现了数据库中表 post_timings 导致的问题。该表用于存储用户已在哪些帖子中阅读过。在某些(对我而言)未知的情况下,服务器可能会尝试向已存在记录的表中写入数据。

我查看了日志并找到了与该数据库表相关的线索。遗憾的是,我不再记得具体查看了哪些日志……:confused:

我的解决方法是简单地清空该表的内容。所有用户都丢失了他们在帖子中的阅读进度,有些人不得不重新在已有帖子中发帖,以覆盖浏览器缓存的内容。我的论坛非常小,只有大约 20 名用户,我认为这种方法并不适用于用户更多的论坛 :wink:

此致,
Ronny

谢谢 Ronny,天哪!我想我的 1 万名用户对于失去阅读历史不会太高兴。过去几周,我也收到许多用户的反馈,称他们的帖子没有被正确标记为已读。我想这也解释了那个问题。

Sam 或其他人,有没有办法在不删除表的情况下清理这个问题?:slight_smile:

此已修复的漏洞可能解释了未读状态的问题:

我刚刚在我的本地环境中尝试复现这个错误。我成功地将一个帖子移动到了一个新主题,然后又移了回来。

我无法确定此处提到的提交是否导致了该错误。该提交并未修改 post_timings 表,且它属于我们正在开发的一项实验性功能(默认禁用)。为了保险起见,我尝试在启用该功能的情况下移动帖子,结果也正常。

如果有人能分享一些日志,那将非常有帮助。

我查看一下是否有之前关于数据表错误的旧日志。不过,清空表内容确实解决了问题(尽管有我提到的副作用)。

抱歉,我搜索过了,但再也找不到了…… :confused:

顺便提一下,我在尝试将某篇帖子从一个主题移动到另一个主题时,也遇到了这个 500 错误。我并没有进行任何复杂操作,所以如果 Discourse 的同事需要日志,请告诉我需要查看哪些内容,我会尽力提供。

谢谢,我会在下一个测试版发布时尝试。