Durante a restauração: "EXCEÇÃO: Você está tentando restaurar uma versão mais recente do esquema. Você deve migrar primeiro!"

Recentemente configurei um servidor Discourse, após passar um tempo em um teste (trydiscourse.com). Ao configurá-lo, baixei um backup dos dados do nosso teste do trydiscourse.com e consegui restaurar esses dados em nosso Discourse auto-hospedado.

Cerca de uma semana depois, quando o teste estava terminando, baixei outro backup do trydiscourse.com e tentei restaurar. Desta vez, a restauração falhou. Aqui estão os logs:

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

[2022-03-05 01:31:08] 'Joaquin' iniciou a restauração!

[2022-03-05 01:31:08] Marcando restauração como em execução...

[2022-03-05 01:31:08] Verificando se /var/www/discourse/tmp/restores/default/2022-03-05-013108 existe...

[2022-03-05 01:31:08] Copiando arquivo para o diretório tmp...

[2022-03-05 01:31:08] Descompactando arquivo, isso pode levar algum tempo...

[2022-03-05 01:31:08] Extraindo arquivo de dump...

[2022-03-05 01:31:08] Validando metadados...

[2022-03-05 01:31:08]   Versão atual: 20220220234155

[2022-03-05 01:31:08]   Versão restaurada: 20220223161000

[2022-03-05 01:31:08] EXCEÇÃO: Você está tentando restaurar uma versão mais recente do esquema. Você deve migrar primeiro!

[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] Tentando reverter...

[2022-03-05 01:31:08] Não foi necessário reverter

[2022-03-05 01:31:08] Limpando coisas...

[2022-03-05 01:31:08] Removendo o diretório tmp '/var/www/discourse/tmp/restores/default/2022-03-05-013108'...

[2022-03-05 01:31:08] Marcando restauração como concluída...

[2022-03-05 01:31:08] Notificando 'Joaquin' sobre o fim da restauração...

Pelo que entendi até agora em minha pesquisa, o “esquema” que a exceção diz que eu deveria “migrar primeiro!” tem a ver com o banco de dados que o Discourse usa.

Procurei no Discourse Meta e não vi ninguém falando sobre isso. Também atualizei o Discourse para a versão mais recente e tentei restaurar novamente, mas o resultado foi o mesmo. Dei uma olhada nos arquivos do Discourse para ver se havia alguma ferramenta relevante que pudesse ajudar, mas não vi nada promissor.

Minha melhor suposição no momento é que, durante essa semana após configurar nosso Discourse auto-hospedado, algo foi alterado em nosso fórum de teste no trydiscourse.com.

Minhas perguntas são:

  1. Como posso fazer a migração que o erro sugere?
  2. O que exatamente causou essa falha na restauração? Isso é algo que aconteceria normalmente (não durante uma transição de teste para auto-hospedado)?

Obrigado antecipadamente por qualquer ajuda com isso! :slightly_smiling_face:

1 curtida

Você deve garantir que reconstrua sua instância auto-hospedada com pelo menos os mesmos plugins que foram instalados em seu teste.

Alternativamente, se você se sentir aventureiro, pode renomear seu arquivo de backup, substituindo 20220223161000 por 20220220234155 no nome do arquivo.

6 curtidas

Encontrei o mesmo problema há alguns dias. A funcionalidade de pesquisa rapidamente me levou à solução:

(o mesmo que @RGJ, aliás).

3 curtidas

Obrigado pelas respostas! Isso é muito útil :heart:

Ainda estou curioso sobre como fazer a migração, mas parece que isso pode não ser necessário.

2 curtidas