Во время восстановления: "EXCEPTION: Вы пытаетесь восстановить более новую версию схемы. Сначала выполните миграцию!"

Недавно я настроил сервер Discourse, предварительно потратив некоторое время на пробную версию (trydiscourse.com). При настройке я загрузил резервную копию данных с нашей пробной версии с trydiscourse.com и смог восстановить эти данные на нашем самостоятельно размещённом Discourse.

Примерно через неделю, когда пробный период заканчивался, я загрузил ещё одну резервную копию с trydiscourse.com и попытался восстановить её. На этот раз восстановление не удалось. Вот логи:

[2022-03-05 01:31:08] [STARTED]

[2022-03-05 01:31:08] 'Joaquin' начал восстановление!

[2022-03-05 01:31:08] Помечаем восстановление как запущенное...

[2022-03-05 01:31:08] Проверяем существование директории /var/www/discourse/tmp/restores/default/2022-03-05-013108...

[2022-03-05 01:31:08] Копируем архив во временную директорию...

[2022-03-05 01:31:08] Распаковываем архив, это может занять время...

[2022-03-05 01:31:08] Извлекаем файл дампа...

[2022-03-05 01:31:08] Проверяем метаданные...

[2022-03-05 01:31:08]   Текущая версия: 20220220234155

[2022-03-05 01:31:08]   Версия для восстановления: 20220223161000

[2022-03-05 01:31:08] ИСКЛЮЧЕНИЕ: Вы пытаетесь восстановить более новую версию схемы. Сначала нужно выполнить миграцию!

[2022-03-05 01:31:08] /var/www/discourse/lib/backup_restore/meta_data_handler.rb:31:in `validate'

/var/www/discourse/lib/backup_restore/restorer.rb:112:in `validate_backup_metadata'

/var/www/discourse/lib/backup_restore/restorer.rb:43:in `run'

/var/www/discourse/script/spawn_backup_restore.rb:23:in `restore'

/var/www/discourse/script/spawn_backup_restore.rb:36:in `block in <main>'

/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'

/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'

[2022-03-05 01:31:08] Пытаемся откатить изменения...

[2022-03-05 01:31:08] Откат не потребовался

[2022-03-05 01:31:08] Очищаем временные файлы...

[2022-03-05 01:31:08] Удаляем временную директорию '/var/www/discourse/tmp/restores/default/2022-03-05-013108'...

[2022-03-05 01:31:08] Помечаем восстановление как завершённое...

[2022-03-05 01:31:08] Уведомляем 'Joaquin' об окончании восстановления...

Из того, что я выяснил в ходе исследований, «схема», о которой говорится в исключении и которую нужно «сначала мигрировать», связана с базой данных, используемой Discourse.

Я искал информацию на Discourse Meta, но не нашёл обсуждений по этой теме. Также я обновил Discourse до последней версии и попытался восстановить данные снова, но результат был тем же. Я просмотрел файлы Discourse в поисках подходящего инструмента, который мог бы помочь, но ничего перспективного не нашёл.

Моя лучшая догадка на данный момент заключается в том, что за ту неделю после настройки нашего самостоятельно размещённого Discourse что-то изменилось на нашей пробной версии форума на trydiscourse.com.

Мои вопросы:

  1. Как выполнить миграцию, которую предлагает ошибка?
  2. Что именно вызвало эту ошибку восстановления? Может ли такое происходить в обычных условиях (не при переходе с пробной версии на самостоятельное размещение)?

Заранее спасибо за любую помощь! :slightly_smiling_face:

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

Или, если вы чувствуете себя смелым, можете переименовать файл резервной копии, заменив 20220223161000 на 20220220234155 в имени файла.

Я столкнулся с той же проблемой несколько дней назад. Функция поиска быстро привела меня к решению:

(кстати, то же самое, что и у @RGJ).

Спасибо за ответы! Это очень полезно :heart:

Меня всё ещё интересует, как выполнить миграцию, но, похоже, это может и не потребоваться.