Migrando para um novo servidor: erro com o banco de dados

Estamos tentando migrar tudo para um novo servidor. Após a migração, recebemos esta mensagem no topo:

Quando tento executar o seguinte dentro do app:

  # sudo ./launcher enter app
  # rails c
  > user = User.find_by_email("<admin_email>")
  > user.admin = true
  > user.save`

Obtenho o seguinte erro:

ActiveModel::MissingAttributeError: não é possível escrever atributo desconhecido ``
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activemodel-6.0.2.2/lib/active_model/attribute.rb:206:in with_value_from_database' Causado por ActiveRecord::StatementInvalid: PG::SyntaxError: ERRO: identificador delimitado de comprimento zero em ou próximo a """" LINE 1: ... = '2020-04-23 16:30:36.173916' WHERE "site_settings"."" = 3 ^ from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.1/lib/patches/db/pg.rb:69:in exec_params’
Causado por PG::SyntaxError: ERRO: identificador delimitado de comprimento zero em ou próximo a “”“”
LINE 1: … = ‘2020-04-23 16:30:36.173916’ WHERE “site_settings”.“” = 3
^
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.1/lib/patches/db/pg.rb:69:in `exec_params’

Alguma ideia de como finalizar a instalação? Pode parecer que uma tabela está corrompida.

Você pode voltar um pouco e nos explicar com mais precisão o que está tentando fazer? Isso é antes ou depois de restaurar um backup? Ou é uma instalação nova?

Passos que realizamos:

  1. Instalamos a versão mais recente no novo servidor
  2. Mudamos o servidor antigo para apenas leitura e fizemos um backup
  3. Restauramos o backup no novo servidor

O erro ocorre após o passo 3 e repetimos o processo duas vezes.

Você definiu um e-mail de desenvolvedor em app.yml? Já tentou reconstruir o container?

Sim. O Discourse funciona corretamente sem importar a migração. Sem erros. Após restaurar o banco de dados de backup, as configurações não podem ser modificadas porque recebemos um erro, e ao tentar ativar o e-mail do desenvolvedor, nenhum e-mail é enviado. Por isso, eu estava tentando ativar a conta manualmente, mas então encontrei esse erro.

Você executou ./launcher rebuild app após a restauração do backup? Ou entrou no container e executou rake db:migrate? Isso pode ajudar, mas não posso ter certeza até tentarmos :smiley:

Eu já executei o aplicativo de reconstrução do launcher, mas o problema persiste. Devo executar o rake no servidor ou dentro do aplicativo (launcher enter app)?

./launcher rebuild app fará a mesma coisa.

Você ainda tem a instância anterior em execução? Se sim, sua melhor opção a partir de agora é destruir a nova e reconstruí-la com um backup fresco da instância antiga.

Sim, o servidor anterior ainda está em execução. Após investigar o problema mais a fundo, isso ocorre até mesmo no servidor antigo. O mesmo erro aparece. :face_with_raised_eyebrow:

Devo tentar limpar a tabela site_settings e reconfigurá-las manualmente? O Discourse continuará funcionando após eu excluir manualmente todos os registros dessa tabela no PostgreSQL?

Eu evitaria fazer isso, a menos que você saiba o que está fazendo.

Você pode querer postar em Marketplace para obter ajuda mais avançada. Parece que, infelizmente, você pode ter uma instalação corrompida.