备份恢复问题

[开始]
‘user1’ 已启动恢复操作!
正在将恢复状态标记为运行中…
正在确保 /workspace/discourse/tmp/restores/default/2026-04-29-211652 存在…
正在将归档文件复制到临时目录…
正在解压转储文件…
正在验证元数据…
当前版本:20260420014648
已恢复版本:20260420014648
正在启用只读模式…
正在暂停 Sidekiq…
最多等待 60 秒,让 Sidekiq 完成正在运行的任务…
I, [2026-04-29T21:16:58.919008 #394429]  INFO – : 检测到死锁的工作进程 394502,正在重启…
I, [2026-04-29T21:16:59.708195 #396907]  INFO – : 正在进程 ID 396907 中加载 Sidekiq
E, [2026-04-29T21:16:59.731189 #396907] ERROR – : 启动 Sidekiq 时遇到错误:[Discourse::Utils::CommandError] renice -n 5 -p 396907
renice: 无法为进程 ID 396907 设置优先级:权限被拒绝

/workspace/discourse/lib/discourse.rb:177:in ‘Discourse::Utils::CommandRunner#execute_command’
/workspace/discourse/lib/discourse.rb:143:in ‘Discourse::Utils::CommandRunner#exec’
/workspace/discourse/lib/discourse.rb:33:in ‘Discourse::Utils.execute_command’
/workspace/discourse/lib/demon/sidekiq.rb:133:in ‘Demon::Sidekiq#after_fork’
/workspace/discourse/lib/demon/base.rb:188:in ‘block in Demon::Base#run’
/workspace/discourse/lib/demon/base.rb:184:in ‘Kernel#fork’
/workspace/discourse/lib/demon/base.rb:184:in ‘Demon::Base#run’
/workspace/discourse/lib/demon/base.rb:177:in ‘Demon::Base#start’
/workspace/discourse/lib/demon/base.rb:163:in ‘Demon::Base#ensure_running’
/workspace/discourse/lib/demon/base.rb:44:in ‘block in Demon::Base.ensure_running’
/workspace/discourse/lib/demon/base.rb:44:in ‘Array#each’
/workspace/discourse/lib/demon/base.rb:44:in ‘Demon::Base.ensure_running’
/workspace/discourse/config/pitchfork.conf.rb:136:in ‘block (2 levels) in Pitchfork::Configurator#load’
正在 discourse_functions 架构中创建缺失的函数…
正在恢复转储文件…(这可能需要一些时间)
SET
SET
SET
SET
SET
set_config

(1 行)
SET
SET
SET
SET
错误:类型 “ai_moderation_setting_type” 已存在
异常:psql 失败:错误:类型 “ai_moderation_setting_type” 已存在
/workspace/discourse/lib/backup_restore/database_restorer.rb:95:in ‘BackupRestore::DatabaseRestorer#restore_dump’
/workspace/discourse/lib/backup_restore/database_restorer.rb:26:in ‘BackupRestore::DatabaseRestorer#restore’
/workspace/discourse/lib/backup_restore/restorer.rb:61:in ‘BackupRestore::Restorer#run’
/workspace/discourse/script/spawn_backup_restore.rb:20:in ‘Object#restore’
/workspace/discourse/script/spawn_backup_restore.rb:33:in ‘block in ’
/workspace/discourse/script/spawn_backup_restore.rb:4:in ‘Kernel#fork’
/workspace/discourse/script/spawn_backup_restore.rb:4:in ‘’
正在尝试回滚…
无需回滚
正在清理临时文件…
正在从 discourse_functions 架构中删除函数…
正在删除临时目录 ‘/workspace/discourse/tmp/restores/default/2026-04-29-211652’…
正在取消暂停 Sidekiq…
正在将恢复状态标记为完成…
正在通知 ‘user1’ 恢复操作已结束…
I, [2026-04-29T21:17:01.099411 #397017]  INFO – : 正在进程 ID 397017 中加载 Sidekiq
E, [2026-04-29T21:17:01.108527 #397017] ERROR – : 启动 Sidekiq 时遇到错误:[Discourse::Utils::CommandError] renice -n 5 -p 397017
renice: 无法为进程 ID 397017 设置优先级:权限被拒绝

/workspace/discourse/lib/discourse.rb:177:in ‘Discourse::Utils::CommandRunner#execute_command’
/workspace/discourse/lib/discourse.rb:143:in ‘Discourse::Utils::CommandRunner#exec’
/workspace/discourse/lib/discourse.rb:33:in ‘Discourse::Utils.execute_command’
/workspace/discourse/lib/demon/sidekiq.rb:133:in ‘Demon::Sidekiq#after_fork’
/workspace/discourse/lib/demon/base.rb:188:in ‘block in Demon::Base#run’
/workspace/discourse/lib/demon/base.rb:184:in ‘Kernel#fork’
/workspace/discourse/lib/demon/base.rb:184:in ‘Demon::Base#run’
/workspace/discourse/lib/demon/base.rb:177:in ‘Demon::Base#start’
/workspace/discourse/lib/demon/base.rb:95:in ‘Demon::Base#restart’
/workspace/discourse/lib/demon/sidekiq.rb:40:in ‘block in Demon::Sidekiq.heartbeat_check’
/workspace/discourse/lib/demon/sidekiq.rb:31:in ‘Array#each’
/workspace/discourse/lib/demon/sidekiq.rb:31:in ‘Demon::Sidekiq.heartbeat_check’
/workspace/discourse/config/pitchfork.conf.rb:137:in ‘block (2 levels) in Pitchfork::Configurator#load’
完成!
[失败]
I, [2026-04-29T21:17:08.359107 #393481]  INFO – : 回收了未知的子进程 #<Process::Status: pid 396553 exit 0>

我实在无法弄清楚这个问题?有什么建议吗?

你好 @ziln :wave: 欢迎来到 Discourse Meta :slight_smile:

我觉得这看起来像是你的目标实例不干净或已有数据,导致了对象冲突。

假设这是标准安装,请尝试删除并创建一个全新的数据库,然后再执行迁移。

看起来 pfaffman 在这里遇到了类似的问题:

我不知道。那家伙听起来好像懂得不多。:wink: