Проблема с обновлением: сломанный форум

Мы тоже наблюдаем такое поведение. У нас стандартная установка Discourse, которая работает уже несколько лет без проблем.

Моя теория заключается в том, что проблема связана с миграцией базы данных, которая пытается добавить расширение Postgres. Из трассировки стека во время выполнения ./launcher rebuild я вижу:

/var/www/discourse/db/migrate/20220304162250_enable_unaccent_extension.rb:5:in change’`

Интересно, не должна ли эта миграция следовать тому же формату, что и, например, db/migrate/20120924182000_add_hstore_extension.rb?

I, [2022-04-02T12:49:18.895537 #1] INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"' NOTICE: extension "pg_trgm" already exists, skipping I, [2022-04-02T12:49:18.984635 #1] INFO -- : CREATE EXTENSION

@RGJ, у вас есть какие-либо советы по тестированию этого изменения?

Нет, enable_extension делает то же самое.

Это меня не удивляет — это то, что, похоже, есть почти у всех, кто сталкивается с этой проблемой. Неужели у вас есть (внешняя) база данных Postgres, которая не обновлялась уже какое-то время, или у неё отличаются права доступа?

У меня точно такая же проблема. Стандартная установка, работала исправно годами, но теперь при попытке обновления возникает та же ошибка. Внешняя база данных не используется.

Привет, Эрик,
По неизвестной причине OP удалял PG13 и устанавливал PG10 (см. его pastebin). У вас, вероятно, другая проблема. Не могли бы вы в ответном сообщении (или на Pastebin) опубликовать весь ваш вывод, включая команды?

Привет,

Извините за поздний ответ, у меня не было много времени с прошлой недели.

Благодаря вам и Стивену проблема была решена, и я благодарю вас за помощь.

Я объясняю, что произошло, потому что на самом деле была одна проблема, которая привела к другим, и было нелегко быстро решить всё.

Во-первых, версия Postgres на сервере больше не была совместима с последними версиями форума. Я использовал версию 10.

Нам нужно было обнаружить эту проблему и исправить её. Для исправления требовалось обновить Postgres, но на сервере не хватало места на диске. Необходимо как минимум удвоить объём дискового пространства форума, так как он дублирует всё. Поэтому мне пришлось увеличить дисковое пространство форума. После того как всё было настроено, обновление Postgres прошло гладко, как и обновление форума. Было несколько волнительных моментов, особенно касаясь надёжности резервных копий, но в итоге всё прошло хорошо.

Вот процесс, который нужно выполнить:

  1. Отредактируйте файл app.yml и замените строку postgres10.template.yml на postgres.template.yml.
  2. Сохраните изменения.
  3. Увеличьте дисковое пространство сервера.
  4. Обновите Postgres.
  5. Обновите форум.

Надеюсь, это поможет другим людям, оказавшимся в моей ситуации.

До скорого.

Со мной тоже так случилось! Думаю, это, скорее всего, коснулось всех, кто заморозил свою версию Postgres на 10.x, потому что у них ранее не было достаточно места на диске для обновления.

Мне удалось решить эту проблему, выполнив

./launcher enter db

а затем

su postgres -c 'psql discourse -c "create extension if not exists unaccent;"'

Я не мог запустить “enter app”, так как приложение было неработоспособно.