# 仅更改子域名时 Rebake 失败

**URL:** <https://meta.discourse.org/t/rebake-fails-when-changing-the-subdomain-name-only/128104>\
**Category:** Self-hosting\
**Created:** [2019年九月9日 22:27 UTC](https://meta.discourse.org/t/rebake-fails-when-changing-the-subdomain-name-only/128104 "2019-09-09T22:27:28Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![YaserAlnajjar](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/yaseralnajjar/32/100729_2.png) [@YaserAlnajjar](https://meta.discourse.org/u/YaserAlnajjar)\
**Post date:** [2019年九月9日 22:27 UTC](https://meta.discourse.org/t/rebake-fails-when-changing-the-subdomain-name-only/128104/1 "2019-09-09T22:27:28Z")

</div>

你好

我最近将生产环境的 `/shared` 数据库文件夹复制到了预发布服务器（以使两个环境保持一致）。

我意识到链接仍指向之前的域名，因此我遵循了这份 [指南](https://meta.discourse.org/t/change-the-domain-name-or-rename-my-discourse/16098)。

在容器内运行此命令时：

```plaintext
discourse remap forums.coretabs.net discourse.coretabs.net

```

我收到了一个“重复键值”错误：

```plaintext
正在重写 forums.coretabs.net 到 discourse.coretabs.net 的所有出现
此任务将重写数据，您确定吗（输入 YES）
YES
错误：ERROR: duplicate key value violates unique constraint "index_incoming_domains_on_name_and_https_and_port"
详细信息：Key (name, https, port)=(discourse.coretabs.net, t, 443) 已存在。
由于上述错误，重映射仅部分应用。请再次运行脚本。

```

---

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [2019年九月9日 23:27 UTC](https://meta.discourse.org/t/rebake-fails-when-changing-the-subdomain-name-only/128104/2 "2019-09-09T23:27:35Z")

</div>

是的，我认为我们还没有内置冲突处理功能，而且两个域名都有传入链接。

在运行此任务之前，您需要手动从问题表中删除相关数据。

---

<div class="post-metadata">

**Author:** ![YaserAlnajjar](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/yaseralnajjar/32/100729_2.png) [@YaserAlnajjar](https://meta.discourse.org/u/YaserAlnajjar)\
**Post date:** [2019年九月9日 23:36 UTC](https://meta.discourse.org/t/rebake-fails-when-changing-the-subdomain-name-only/128104/3 "2019-09-09T23:36:20Z")

</div>

谢谢 Sam 的快速回复！

能否请您指点我哪里可以修改那个有问题的表格？

---

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [2019年九月9日 23:45 UTC](https://meta.discourse.org/t/rebake-fails-when-changing-the-subdomain-name-only/128104/4 "2019-09-09T23:45:58Z")

</div>

```plaintext
rails c
DB.exec "update from incoming_domains set name='discourse-old.coretabs.net' where name = 'discourse.coretabs.net'"

```

这很可能就是你想要的。虽然会导致轻微的数据不一致，但至少重映射应该能正常工作。

---

<div class="post-metadata">

**Author:** ![YaserAlnajjar](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/yaseralnajjar/32/100729_2.png) [@YaserAlnajjar](https://meta.discourse.org/u/YaserAlnajjar)\
**Post date:** [2019年九月10日 00:30 UTC](https://meta.discourse.org/t/rebake-fails-when-changing-the-subdomain-name-only/128104/5 "2019-09-10T00:30:49Z")

</div>

以下是我所做的操作：

1. 我运行了你指出的命令（不带 `from` 😁）

2. 再次运行 rebake，现在它停在了这里：

```plaintext
Rewriting all occurences of forums.coretabs.net to discourse.coretabs.net
THIS TASK WILL REWRITE DATA, ARE YOU SURE (type YES)
YES
incoming_domains=1
incoming_referers=3
invites=1
javascript_caches=1
post_revisions=509
posts=84
single_sign_on_records=1099
theme_fields=4
topic_custom_fields=4
Error: ERROR: duplicate key value violates unique constraint "unique_post_links"
DETAIL: Key (topic_id, post_id, url)=(69, 212, https://discourse.coretabs.net/t/topic/365) already exists.
The remap has only been partially applied due to the error above. Please re-run the script again.

```

1. 我搜索了 `"unique_post_links"`，发现其对应的表在 [schema.sql](https://github.com/prisma/database-schema-examples/blob/master/postgres/discourse/schema.sql#L9190) 中名为 `topic_links`。

2. 这次链接是部分的，所以我使用了一个替换查询：

```plaintext
DB.exec "update topic_links set url=REPLACE(url, 'discourse.coretabs.net', 'discourse-old.coretabs.net')"

```

1. 再次运行 rebake。

问题完美解决，感谢 Sam 🌹

---

<div class="post-metadata">

**Author:** ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)\
**Post date:** [2023年四月14日 08:07 UTC](https://meta.discourse.org/t/rebake-fails-when-changing-the-subdomain-name-only/128104/6 "2023-04-14T08:07:52Z")

</div>



---

<div class="post-metadata">

**Author:** ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)\
**Post date:** [2023年五月14日 08:08 UTC](https://meta.discourse.org/t/rebake-fails-when-changing-the-subdomain-name-only/128104/7 "2023-05-14T08:08:19Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
