Fehler beim Remapping bei Änderung des Diskursbereichs

Hallo,
Ich habe versucht, einen Discourse-Domainnamen zu ändern, indem ich Change the domain name or rename your Discourse befolgt habe. Die Dinge sahen richtig aus, bis ich den Befehl startete

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

Ich erhielt Folgendes:

root@plop:/var/www/discourse# discourse remap plop.domain.fr forum.plop.fr
Rewriting all occurrences of plop.domain.fr to forum.plop.fr
THIS TASK WILL REWRITE DATA, ARE YOU SURE (type 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: ERROR:  duplicate key value violates unique constraint "unique_post_links"
DETAIL:  Key (topic_id, post_id, url)=(274, 455, http://forum.plop.fr) already exists.
The remap has only been partially applied due to the error above. Please re-run the script again.

Es schien, als ob es sich um den Fehler handelte, der hier gemeldet wurde, aber leicht unterschiedlich war. Ich vermute, der Fehler hängt damit zusammen, dass die neue Domain im Forum besprochen wurde.

Um dies zu überwinden, konnte ich nichts starten wie db:exec, um DB-Befehle über rake zu erzwingen. Also habe ich es direkt über Postgres gemacht:

  1. Verbinden Sie die Datenbank:
# cd /var/discourse/
# ./launcher enter app
# su - postgres
$ psql
postgres=# \c discourse
  1. Versuchen Sie, die URL direkt in der Tabelle zu ersetzen
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:  Key (topic_id, post_id, url)=(274, 455, http://forum.plop.fr) already exists.
  1. Bei Fehler: Erzwingen Sie einen Ersatz, der die Einzigartigkeit nicht beeinträchtigt, z. B. forum.plop.fr/:
discourse=# update topic_links set url=REPLACE(url, 'plop.domain.fr', 'forum.plop.fr/') where topic_id=274;
  1. Wiederholen Sie 3., bis 2. ohne Fehler abgeschlossen ist. Beenden Sie dann pg.
discourse=# update topic_links set url=REPLACE(url, 'plop.domain.fr', 'forum.plop.fr');
UPDATE 1349
discourse=#
\q
  1. Starten Sie den Remap und den Rebake neu:
$ exit
# discourse remap plop.domain.fr forum.plop.fr
  1. Überprüfen und korrigieren Sie manuell die problematischen Themen (deren Inhalt inkonsistent sein kann), indem Sie forum.plop.fr/t/topic/274 und andere besuchen.
1 „Gefällt mir“

Wenn ich das Problem a posteriori richtig verstehe, könnte das doc vorschlagen, alle alten Vorkommen von talk.bar.com zu entfernen, bevor dieser Befehl ausgeführt wird. Dies könnte einfach über

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

erfolgen.
(Ich habe es nicht ausprobiert.)

1 „Gefällt mir“