Пересборка не удаётся при изменении только имени поддомена

Привет

Недавно я скопировал папку базы данных /shared с нашего продакшн-сервера на сервер тестовой среды (чтобы привести обе среды в соответствие).

Я обнаружил, что ссылки указывают на предыдущий домен, поэтому последовал этой инструкции.

При выполнении этой команды внутри контейнера:

discourse remap forums.coretabs.net discourse.coretabs.net

я получаю ошибку duplicate key value:

Rewriting all occurences of forums.coretabs.net to discourse.coretabs.net
THIS TASK WILL REWRITE DATA, ARE YOU SURE (type YES)
YES
Error: ERROR:  duplicate key value violates unique constraint "index_incoming_domains_on_name_and_https_and_port"
DETAIL:  Key (name, https, port)=(discourse.coretabs.net, t, 443) already exists.
The remap has only been partially applied due to the error above. Please re-run the script again.

Ошибка: ОШИБКА: значение дублирующегося ключа нарушает уникальное ограничение “index_incoming_domains_on_name_and_https_and_port”
ДЕТАЛИ: Ключ (name, https, port)=(discourse.coretabs.net, t, 443) уже существует.

Из-за вышеуказанной ошибки переназначение было применено только частично. Пожалуйста, запустите скрипт снова.

Да, я не думаю, что у нас есть встроенная обработка конфликтов, и у вас есть входящие ссылки для обоих доменов.

Вам нужно будет вручную удалить данные из проблемной таблицы перед запуском этой задачи.

Спасибо, Сэм, за быстрый ответ!

Не могли бы вы указать, где можно изменить проблемную таблицу?

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

Скорее всего, это то, что вам нужно. Это приведёт к незначительной несогласованности данных, но, по крайней мере, переназначение, вероятно, сработает.

Вот что я сделал:

  1. Запустил команду, на которую вы указали (без from :grin:)

  2. Запустил rebake снова, и теперь процесс остановился здесь:

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. Поиск в Google по запросу "unique_post_links" показал, что соответствующая таблица называется topic_links в файле schema.sql

  2. На этот раз ссылки были частичными, поэтому я использовал запрос с заменой:

DB.exec "update topic_links set url=REPLACE(url, 'discourse.coretabs.net', 'discourse-old.coretabs.net')"
  1. Снова запустил rebake.

Всё сработало как по маслу, спасибо, Сэм :rose: