还原失败,提示“hotlinked_media_status”已存在

继续讨论 Upgrade fails on duplicate key error (“index post hotlinked media on post id and url md5”)

我现在正尝试将一个生产站点恢复到一个暂存站点,但遇到了以下错误:

ERROR:  type "hotlinked_media_status" already exists
EXCEPTION: psql failed: ERROR:  type "hotlinked_media_status" already exists

@david,你之前修复此问题时是否遗漏了某种情况(我认为当时是迁移失败,而现在是恢复操作)。

1 个赞

您将如何恢复网站?通过用户界面? discourse CLI?直接 psql?

从命令行恢复最新的备份(我今天才弄明白这个 sed 技巧,但复制粘贴也一样)。

$(discourse restore |sed -n '3p')

备份在 S3 上,从稍旧的版本恢复:

Discourse 3.4.0.beta1-dev - https://github.com/discourse/discourse version a3d61ba1c43931eb688f9b2b85c207b5bab02b8c

Discourse 3.4.0.beta2-dev - https://github.com/discourse/discourse version f405c021ebd36d5f11499159bd2b54098356a8f9"

您能在其他安装上重现此问题吗?

令人惊讶的是,这个问题在两年多后才出现,而且没有其他报告 :thinking:

也许不能?我已成功地将相同的备份恢复到我的开发机器上。

您知道我可能做了什么导致了这个问题,或者我该如何解决它吗? 我删除了数据库,然后就能够恢复了。删除数据库才是真正的解决方案,但我自己(似乎)造成的问题不配得到解决方案。

此主题在上次回复后 30 天自动关闭。不再允许回复。

我刚刚获得的一个非常有价值的见解是,hotlinked_media_status 只是恢复文件中的第一项操作。如果手动将其从现有数据库中删除,恢复将在下一条语句(CREATE TABLE public.admin_notices)处失败。

所以这与该特定类型定义无关。我怀疑这只是一个更大问题的症状,我怀疑 BackupRestore.move_tables_between_schemas(MAIN_SCHEMA, BACKUP_SCHEMA) 未能完成其应有的工作。

1 个赞