Ошибка при восстановлении из резервной копии: функция discourse_functions.raise_discourse_voting_category_settings_readonly() не существует

Здравствуйте,

Я создал резервную копию с помощью нашей основной инстанса версии Discourse 3.4.0.beta1-dev 633a19fcc09a41a31eadd176519483217b2ec241.

Я хочу загрузить эту резервную копию на локальный инстанс, который является свежей установкой версии Discourse 3.4.0.beta1-dev 2b577950af5b24ed0d32eecc4ab6475619998fba.

Вот лог, есть ли какие-либо предложения по обходному пути?

[2024-08-03 16:45:29] CREATE INDEX
[2024-08-03 16:45:29] CREATE INDEX
[2024-08-03 16:45:29] ERROR:  function discourse_functions.raise_discourse_voting_category_settings_readonly() does not exist
[2024-08-03 16:45:29] EXCEPTION: psql failed: ERROR:  function discourse_functions.raise_discourse_voting_category_settings_readonly() does not exist

У вас на локальном экземпляре установлен тот же набор плагинов?

Здравствуйте,

У меня не получилось, проблема заключалась в том, что плагин Post Voting Plugin не был установлен. Интересно, что он не был включён на основном сайте (просто установлен по умолчанию), но, полагаю, этого хватило, чтобы вызвать ошибку. Спасибо.

Я получаю ту же ошибку на тестовом экземпляре (где я только что обновился до pg16, чтобы получить последнюю версию pgvector, из-за которой ранее не удавалось выполнить восстановление), который я только что обновил через git pull.

Я добавил как голосование за посты, так и голосование за темы (голосование за темы было в исходном репозитории).

Мой первый порыв был выполнить:

 DROP table discourse_voting_category_settings;

Но затем мне пришлось добавить CASCADE, и я передумал, решив вместо этого выполнить восстановление на тестовом сервере.

На тестовом сайте при попытке восстановить ту же базу данных я получаю следующее:

ERROR:  type "hotlinked_media_status" already exists
EXCEPTION: psql failed: ERROR:  type "hotlinked_media_status" already exists
/var/www/discourse/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:51:in `run'

Кажется, это другое. Я забыл об этом за последние три недели, но с тех пор у нас было несколько случаев, когда резервные копии не восстанавливались, потому что плагин голосования за посты не был установлен. Так что это точно имеет место.

Но hotlinked_media_status — это основная таблица из 2022 года… значит, это что-то другое.

./db/migrate/20220428094026_create_post_hotlinked_media.rb

(Кстати, я веду дневник всех проблем за последние 11 лет, и упоминания об этой проблеме у меня нет)

Что ж, я убедился, что в тестовом окружении есть все те же плагины, что и на продакшене, и восстановил там резервную копию!

Но на стенде (по какой-то причине там отсутствует плагин аутентификации Microsoft, но ведь не в этом же дело?!?!?!) всё ещё сохраняется проблема: EXCEPTION: psql failed: ERROR: type "hotlinked_media_status" already exists.

Но если бы я только поискал:

Кажется, что-то похожее уже было исправлено однажды…