移动后链接失效

我们迁移到新服务器后,许多论坛内部链接已损坏。我曾在临时 URL staging.example.com 上创建了新服务器以协助过渡,但现在过渡已完成,forum.example.com 上的许多链接仍指向 staging.example.com(该地址已不存在)。

我已验证 app.yml 并重新构建:

containers/app.yml: DISCOURSE_HOSTNAME: forum.example.com

我已在管理 > 设置中搜索是否残留任何“staging”相关内容。

DNS 早已完成传播。

我看到这个旧的参考链接,不确定是否与此相关。

如果除了手动编辑外没有其他修复方法,请问有什么提示可以找到所有出现的位置吗?搜索按钮对此效果不佳。

我照做了。一切都很顺利,但现在链接坏了。

所以你的意思是 remap 和/或 rebake 失败了?

抱歉,我没有做重新映射。我今晚试试。

是的,现在我可以确认重映射失败了。

> /var/www/discourse# discourse remap staging.example.com forum.example.com
> 正在将所有 staging.example.com 的实例重写为 forum.example.com
> 此操作将重写数据,您确定吗(输入 YES)
> YES
> 错误:ERROR: 重复键值违反了唯一约束 "unique_post_links"
> 详情:键 (topic_id, post_id, url)=(8718, 57455, https://forum.example.com/t/exampletopic/4606/336) 已存在。
> 由于上述错误,重映射仅部分应用。请重新运行该脚本。

我已按指示重新运行,但出现了相同的错误,且涉及相同的 (topic_id, post_id, url) 键。

我可以进入 Rails 控制台并执行一些 SQL/ActiveRecord 命令,如果您能告诉我具体要运行什么。或者使用数据探索器(Data Explorer)。

这个问题需要其他人来帮你解决,因为我不确定你为何会出现重复的键值。

讽刺的是,违规的话题 8718 和帖子 57455 实际上位于两位用户之间的私信中,他们正在 lamenting 链接已失效!

但通过数据探索器,我只看到一条 ID 为 57455 的帖子。我不知道为什么 remap 会报错。

该帖子可能已经同时包含了旧 URL 和新 URL。只需编辑它并删除它们即可。

我已清理了几篇帖子,并成功完成了重新映射。但是,重新烘焙(rebake)进行到 30% 时遇到了错误,导致系统挂起,我不得不重启。系统内存和磁盘空间均充足。

问题:重启后,在 ‘top’ 命令中看到一个 Ruby 进程占用了 60% 的 CPU。这是 rake 任务吗?它会在重启后继续执行吗?

可能是 Sidekiq 正在忙于重新处理。请前往论坛的 /sidekiq 页面查看。