Я только что перенёс форум с name.com на forum.name.com, но это не удалось:
Error: ERROR: duplicate key value violates unique constraint “unique_post_links”
DETAIL: Key (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.com и rake posts:rebake, чтобы попытаться исправить это — с некоторым успехом; некоторые случаи пришлось изменить вручную).
У меня есть несколько вопросов:
Применяется ли discourse remap name.com forum.name.com только к содержимому постов? Если нет, достаточно ли проверить только настройки сайта (Site Settings), чтобы найти возможные проблемы?
Следует ли запускать эту команду в рамках транзакции? (Если да, то в моём случае при ошибке это, похоже, не было выполнено).
Я проверил все настройки сайта — всё в порядке (как и темы), и, полагаю, всё вышеперечисленное было выполнено. Видите ли вы что-то, что должно было быть сделано, но не было? Как вы думаете, можно ли продолжить работу в текущем состоянии, или лучше начать всё заново с нуля?
Также есть какие-то идеи, почему ошибки «duplicate key value violates unique constraint» становятся всё более частыми в Discourse? Я заметил несколько тем на эту тему, и, кажется, это уже третий раз, когда я сталкиваюсь с такой проблемой.
По выводу — нет. Мы выводим только таблицы с изменениями. Нет способа узнать, отсутствует ли таблица в списке из-за ошибки или просто потому, что в ней (не указанной в списке) не было ни одного вхождения name.com.
К сожалению, это выходит за рамки моей компетенции.
Есть какие-то идеи, что означают эти числа? Количество изменений?
Какой сейчас рекомендуемый план действий? Исправить ошибку уникального ограничения, а затем выполнить обратную операцию (вернуться с forum.name.com к name.com, а затем снова к forum.name.com), или нужно сделать что-то другое?
Редактирование: готово
Я зашел в приложение и консоль Rails, удалил соответствующую TopicLink, затем перешел с forum.name.com обратно на name.com, а затем снова на forum.name.com.