错误:在迁移到新安装的过程中恢复备份时无法通知管理员

继续讨论 将您的 Discourse 实例迁移到不同服务器

在新服务器上安装 Discourse、注册新管理员(使用与旧管理员相同的用户名)并恢复备份后,一切顺利直到最后,然后我遇到了以下错误:

[2020-01-24 07:06:47] 正在通知 'padpors' 恢复结束... [2020-01-24 07:06:47] 通知用户时发生错误。

结果导致备份无法恢复。

1 个赞

我从网站获取了另一个备份,并尝试按照以下指南通过终端进行恢复:https://meta.discourse.org/t/restore-a-backup-from-command-line/108034。但在恢复结束时,终端中出现了相同的错误:

正在通知“system”恢复结束...
通知用户时出现问题。
完成!
[FAILED]
恢复已完成。

由于备份文件本身没有问题,我推测这是一个 bug。

6 个赞

@gerhard 你知道可能导致这个问题的原因是什么吗?

7 个赞

最近备份/恢复代码发生了很多变化。你使用的是最新版本吗?

2 个赞

我也经常看到这个错误。
但是……这个错误发生在恢复之后,并且恢复最终以“成功”结束。所以这确实是一个错误,但它肯定没有导致恢复失败。

取消暂停 sidekiq...
将恢复标记为完成...
通知 'DHSupport' 恢复已结束...
通知用户时发生错误。
完成!
[成功]

你确定上方没有错误吗?

6 个赞

进一步查看了这个问题。

#<NoMethodError: undefined method `join' for nil:NilClass>
回溯:
     lib/discourse.rb:45:in `pretty_logs'
     /var/www/discourse/lib/backup_restore/restorer.rb:134:in `notify_user'

看起来 @logs 未初始化?

7 个赞

是的,这两个实例都是全新安装并已更新到最新。

上面没有其他错误,但我会再检查一遍以确保无误。

1 个赞

你说得对,这是之前的错误:

ERROR:  could not create unique index "index_tags_on_lower_name"
DETAIL:  Key (lower(name::text))=(زبا�) is duplicated.
EXCEPTION: psql failed: DETAIL:  Key (lower(name::text))=(زبا�) is duplicated.

我想这已经在以下链接中报告过了:Can't restore due to corrupt indexes (with some clues on how to deal with corrupt indexes)There are some duplicated tags due to database corruption and I can't merge

8 个赞
9 个赞