Сбой переназначения при смене домена дискурса

Здравствуйте,
Я попытался изменить доменное имя Discourse, следуя инструкции Change the domain name or rename your Discourse. Всё выглядело правильно до запуска команды

discourse remap talk.foo.com talk.bar.com

Я получил следующее сообщение:

root@plop:/var/www/discourse# discourse remap plop.domain.fr forum.plop.fr
Перезапись всех вхождений plop.domain.fr на forum.plop.fr
ЭТА ОПЕРАЦИЯ ПЕРЕПИШЕТ ДАННЫЕ, УВЕРЕНЫ? (введите YES)
YES
backup_metadata=1
email_logs=991
javascript_caches=1
post_revisions=126
post_search_data=20
posts=782
stylesheet_cache=446
theme_settings=1
Ошибка: ERROR:  duplicate key value violates unique constraint "unique_post_links"
DETAIL:  Ключ (topic_id, post_id, url)=(274, 455, http://forum.plop.fr) уже существует.
Из-за ошибки выше операция remap была применена только частично. Пожалуйста, запустите скрипт снова.

Казалось, что это похоже на ошибку, описанную здесь, но с небольшими отличиями. Я предполагаю, что проблема связана с тем, что новый домен уже обсуждался на форуме.

Чтобы обойти это, я не смог выполнить команду типа db:exec для принудительного выполнения команд базы данных через rake. Поэтому я сделал это напрямую через PostgreSQL:

  1. Подключиться к базе данных:
# cd /var/discourse/
# ./launcher enter app
# su - postgres
$ psql
postgres=# \c discourse
  1. Попытаться напрямую заменить URL в таблице
discourse=# update topic_links set url=REPLACE(url, 'plop.domain.fr', 'forum.plop.fr');
ERROR:  duplicate key value violates unique constraint "unique_post_links"
DETAIL:  Ключ (topic_id, post_id, url)=(274, 455, http://forum.plop.fr) уже существует.
  1. При ошибке: принудительно выполнить замену, не нарушающую уникальность, например, forum.plop.fr/:
discourse=# update topic_links set url=REPLACE(url, 'plop.domain.fr', 'forum.plop.fr/') where topic_id=274;
  1. Повторять шаг 3, пока шаг 2 не завершится без ошибок. Затем выйти из pg.
discourse=# update topic_links set url=REPLACE(url, 'plop.domain.fr', 'forum.plop.fr');
UPDATE 1349
discourse=# 
\q
  1. Запустить remap и rebake заново:
$ exit
# discourse remap plop.domain.fr forum.plop.fr
  1. Вручную проверить и исправить проблемные темы (содержимое которых может быть несогласованным), посетив forum.plop.fr/t/topic/274 и другие.

Если я правильно понял проблему a posteriori, документация может предлагать удалить все старые вхождения talk.bar.com перед запуском этой команды. Это можно сделать просто с помощью:

discourse remap talk.bar.com talk.foo-or-bar-that-s-the-question.com

(Я не пробовал.)