`discourse remap` 失败

我刚刚将一个论坛从 name.com 迁移到 forum.name.com,但失败了:

错误:ERROR: 重复键值违反了唯一约束 “unique_post_links”
详情:键 (topic_id, post_id, url)=(246, 813, http://forum.name.com) 已存在。
由于上述错误,重映射仅部分应用。请重新运行脚本。

因此我再次运行了它(再次失败),然后执行了 rake posts:rebake 并检查论坛,发现存在一些 forum.forum.name.com 的实例。(所以我接着执行 discourse remap forum.forum.name.com forum.name.comrake posts:rebake 尝试修复——取得了一些成功,但有些实例仍需手动修改)。

我有几个问题:

  • discourse remap name.com forum.name.com 是否仅适用于帖子内容?如果不是,是否只需检查站点设置以查找潜在问题?
  • 是否应在某种事务中运行?(如果是,它在我失败时似乎并未这样执行)

不,它适用于整个数据库。包括帖子、站点设置、主题、上传内容等所有内容。

4 个赞

啊,是的,再次查看完整错误信息后,看来已经执行了以下步骤:

backup_metadata=1
categories=6
email_logs=306
email_tokens=1
groups=1
incoming_domains=3
incoming_emails=3
javascript_caches=4
post_custom_fields=275
post_revisions=134
posts=441
post_search_data=50
search_logs=8
site_settings=5
stylesheet_cache=540
theme_fields=9
theme_settings=3

我已经检查了所有站点设置,它们都正常(主题也是如此),我想上述所有步骤应该都已完成。您是否发现有什么本该执行却未执行的内容?您认为可以按当前状态继续操作,还是认为需要从头重新执行?

另外,您是否知道为什么 Discourse 中“重复键值违反唯一约束”(duplicate key value violates unique constraint)的错误越来越频繁?我注意到有几个相关主题,这应该是我第三次遇到此类问题了。

从输出结果来看,没有。我们只输出包含变更的表格。无法确定某个表格未出现在列表中是因为错误,还是仅仅因为该(未列出的)表格中根本没有 name.com 的实例。

很遗憾,这超出了我的专业范围。

谢谢,Joshua。

有什么想法这些数字代表什么吗?是变更的数量吗?

现在推荐的后续步骤是什么?先修复唯一约束错误,然后反向操作(从 forum.name.com 改回 name.com,再改回去),还是有其他方法?

编辑:已完成

我进入应用和 Rails 控制台,删除了有问题的 TopicLink,然后从 forum.name.com 改回 name.com,再改回去。

backup_metadata=1
categories=6
email_logs=318
email_tokens=2
groups=1
incoming_domains=3
incoming_emails=3
javascript_caches=4
post_custom_fields=277
post_revisions=140
posts=444
post_search_data=51
search_logs=10
site_settings=5
stylesheet_cache=564
theme_fields=9
theme_settings=3
topic_links=281
topics=30
topic_search_data=8
translation_overrides=1
uploads=54
user_auth_token_logs=48
user_emails=2
user_histories=189
完成
1 个赞