В последних заметках о выпуске (3.2.0.beta1) я обратил внимание на плагин discourse-ai, который ранее не встречал, поэтому попытался добавить его и одновременно обновить свой экземпляр Discourse.
Как указано в заголовке, в процессе инициализации (bootstrap) возникает ошибка: команда rake db:migrate не может создать уникальный индекс по полю theme_field_id. Ниже приведены детали того, как я пришёл к этой точке…
Первая попытка обновления (ошибка patch-package)
Я использую установку с разделёнными контейнерами, поэтому:
-
Отредактировал файл
web_only.yml, добавив новый плагинdiscourse-ai.Например, добавлена дополнительная строка в секцию hooks плагинов
## Плагины размещаются здесь ## подробности см. на https://meta.discourse.org/t/19157 hooks: after_code: - exec: cd: $home/plugins cmd: - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git - sudo -E -u discourse git clone https://github.com/discourse/discourse-voting.git - sudo -E -u discourse git clone https://github.com/discourse/discourse-ai.git -
Запустил
./launcher bootstrap web_only.
Процесс завершился ошибкой с сообщением о том, что patch-package не найден.
Git pull → bootstrap (ошибка pg-vector)
Я решил убедиться, что у меня установлены последние обновления лаунчера, прежде чем повторять попытку:
- Выполнил
git pull, чтобы убедиться, что у меня есть последние обновления, связанные с лаунчером. - Снова запустил
./launcher bootstrap web_only.
На этот раз появились сообщения об ошибках, связанные с pg-vector.
Я записал версии PostgreSQL, чтобы иметь их в своём отчёте, если решу вернуться к плагину discourse-ai.
- web_only:
- клиент:
psql (PostgreSQL) 13.10 (Debian 13.10-1.pgdg110+1)
- клиент:
- data:
- сервер:
PostgreSQL 13.9 (Debian 13.9-1.pgdg110+1)
- сервер:
Удаление плагина discourse-ai → bootstrap
Затем я удалил плагин discourse-ai из файла web_only.yml и снова запустил bootstrap.
К моему удивлению, ошибки всё ещё присутствовали, но на этот раз они, казалось, были связаны с невозможностью rake db:migrate создать уникальный индекс index_javascript_caches_on_theme_field_id с деталями: ключ (theme_field_id)=(3) дублируется.
Ваша помощь? 
Это привело меня сюда в поисках помощи. Я решил сделать паузу и получить мнения сообщества, прежде чем углубляться дальше, на случай, если кто-то уже сталкивался с этим.
Для справки: у меня установлена версия 3.2.0.beta1-dev (993ed10cf0 ~ 9 августа).
Хотя я не думаю, что это связано с данной проблемой, считаю, что не помешает упомянуть, что в начале этого года я мигрировал между хост-машинами… Хотя с тех пор я выполнил несколько обновлений Discourse через административный интерфейс.
Подход к миграции
По памяти, это было примерно следующее: обновление исходного экземпляра до последней версии Discourse, установка Discourse на новый хост, заморозка исходного экземпляра, создание резервной копии Discourse на исходном хосте, синхронизация изображений и других данных между хостами через rsync, восстановление резервной копии на новом хосте.