Erro ao atualizar, falha ao inicializar

Olá! Tenho um problema na última atualização:

FAILED -------------------- Pups::ExecError: cd /var/www/discourse & su discourse -c ‘bundle exec rake db:migrate’ falhou com retorno #<Process::Status: pid 690 exit 1> Localização da falha: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’ exec falhou com os parâmetros {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]} 7027ff0ccd166f831f9728472676ad91704fdd4caa6833a219d44697e740acdc ** FALHA AO INICIALIZAR ** por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma. ./discourse-doctor pode ajudar a diagnosticar o problema.

Sideqik também parou.

Alguém pode me ajudar? Obrigado!!

P.S. o site é llastres.com

2 curtidas

Você pode, por favor, fazer o que a mensagem diz e

Precisamos do log inteiro para solucionar o problema.

3 curtidas

Ok, como posso identificá-los? Procurando pela palavra “error”? Se você me disser como executar o log, eu o anexarei. Sou novo no uso de servidores. Muito obrigado pela sua ajuda.

Editar, encontrei isto:

Caused by:                                              
PG::DuplicateTable: ERROR:  relation "discourse_reactions_reactions" already exists
2 curtidas

Você pode compartilhar seu arquivo app.yml?

3 curtidas

Desculpe, eu estava no trabalho. Este é o meu app.yml:

## este é o modelo de contêiner Docker Discourse autônomo e completo
##
## Após fazer alterações neste arquivo, você DEVE reconstruir
## /var/discourse/launcher rebuild app
##
## TENHA MUITO CUIDADO AO EDITAR!
## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
## visite http://www.yamllint.com/ para validar este arquivo conforme necessário

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente estas duas linhas se desejar adicionar Let's Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## quais portas TCP/IP este contêiner deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## veja https://meta.discourse.org/t/17247 para detalhes
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.spanish"

  ## Defina db_shared_buffers para um máximo de 25% da memória total.
  ## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode substituir
  db_shared_buffers: "2048MB"

  ## pode melhorar o desempenho da classificação, mas adiciona uso de memória por conexão
  #db_work_mem: "40MB"

  ## Qual revisão do Git este contêiner deve usar? (padrão: tests-passed)
  #version: tests-passed

env:
  LC_ALL: es_ES.UTF-8
  LANG: es_ES.UTF-8
  LANGUAGE: es_ES.UTF-8
  DISCOURSE_DEFAULT_LOCALE: es

  ## Quantas requisições web simultâneas são suportadas? Depende da memória e núcleos da CPU.
  ## será definido automaticamente pelo bootstrap com base nas CPUs detectadas, ou você pode substituir
  UNICORN_WORKERS: 8

  ## TODO: O nome de domínio que esta instância do Discourse responderá
  ## Obrigatório. O Discourse não funcionará com um número IP simples.
  DISCOURSE_HOSTNAME: EDITED

  ## Descomente se você quiser que o contêiner seja iniciado com o mesmo
  ## nome de host (-h option) especificado acima (padrão "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de e-mails delimitados por vírgula que serão administradores e desenvolvedores
  ## na inscrição inicial, exemplo 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'EDITED'

  ## TODO: O servidor de e-mail SMTP usado para validar novas contas e enviar notificações
  # ENDEREÇO SMTP, nome de usuário e senha são necessários
  # AVISO o caractere '#' na senha SMTP pode causar problemas!
  DISCOURSE_SMTP_ADDRESS: EDITED
  DISCOURSE_SMTP_PORT: EDITED
  DISCOURSE_SMTP_USER_NAME: EDITED
  DISCOURSE_SMTP_PASSWORD: EDITED
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, padrão true)
  DISCOURSE_SMTP_DOMAIN: EDITED
  DISCOURSE_NOTIFICATION_EMAIL: EDITED

  ## Se você adicionou o modelo Let's Encrypt, descomente abaixo para obter um certificado SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: EDITED

  ## O endereço CDN http ou https para esta instância do Discourse (configurado para puxar)
  ## veja https://meta.discourse.org/t/14857 para detalhes
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## A chave de endereço IP do MaxMind Geolocation para consulta de endereço IP
  ## veja https://meta.discourse.org/t/-/137387/23 para detalhes
  DISCOURSE_MAXMIND_LICENSE_KEY: EDITED

## O contêiner Docker é sem estado; todos os dados são armazenados em /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins vão aqui
## veja https://meta.discourse.org/t/19157 para detalhes
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-reactions
## Quaisquer comandos personalizados para executar após a construção
run:
  - exec: echo "Início dos comandos personalizados"
  ## Se você quiser definir o endereço de e-mail 'De' para o seu primeiro registro, descomente e altere:
  ## Após receber o primeiro e-mail de inscrição, comente a linha novamente. Ela só precisa ser executada uma vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fim dos comandos personalizados"
1 curtida

A verdade é que nunca tive nenhum problema com a atualização. Eu não estava fazendo nada de estranho, apenas atualizei o sistema e recebi o aviso de que ocorreu um erro.

Este é o log completo:

1 curtida

Está com problemas para executar uma migração de maio de 2021. Este site foi movido entre os canais de lançamento (beta/stable/tests-passed) ou restaurado de um backup em algum momento?

1 curtida

Lembro-me que migramos do mybb nessa data (21 de maio)

Sim, é verdade que hoje tentei recuperar um backup do início do mês para tentar ter uma cópia funcional antes do erro, mas quando cliquei em iniciar, apareceu uma tela de erro.

Desculpe se minha escrita for estranha, estou usando um tradutor.

2 curtidas

Ainda não consigo encontrar uma solução e os fóruns ainda estão fora do ar, alguma ideia de para onde ir a partir daqui? Obrigado!!

2 curtidas

Meu fórum ficou indisponível após a atualização. A atualização parece ter ocorrido bem, mas quando acessei a página do fórum, ela estava em branco.

Eu a atualizei manualmente, e o fórum voltou a funcionar. Não sei se isso vai te ajudar ou não.

2 curtidas

Obrigado pela sua resposta. Acho que meu problema está relacionado a um erro de banco de dados referente à migração dos fóruns. A reconstrução do aplicativo não funciona.

Verifiquei as Perguntas Frequentes e os manuais, mas não encontrei nenhuma solução.

Tenho alguns backups anteriores (acho que) ao erro, mas não consigo carregá-los porque o aplicativo não roda. Só consigo pensar em apagar tudo, fazer uma instalação limpa e carregar um backup…

1 curtida

Tendo um backup e considerando que não consigo executar o aplicativo (para restaurar o backup), o que posso fazer? Não vejo alternativa a não ser excluir o Docker e começar de novo?

1 curtida

O único tópico que encontrei com um problema semelhante foi Unable to login into discourse suddenly - #8 by Tarek_Khalil, e o conselho foi restaurar um backup de antes da confusão da migração, o que pode não ser a melhor opção no seu caso, pois já faz algum tempo.

Receio que erros de banco de dados estejam fora da minha área de especialização. @pfaffman e @RGJ normalmente são muito bons nisso (embora eu não saiba se eles já encontraram algo assim antes). Vocês têm algum truque na manga para isso?

2 curtidas

O que você quer fazer é entrar no postgres e remover essa tabela.

Em linhas gerais, é algo como

./launcher enter app 
sudo postgres
psql 
drop table the_table _mentioned above ;

E então você deve ser capaz de executar a atualização.

Editar: mas espero que você faça um backup apenas do banco de dados primeiro, por precaução!

4 curtidas

Peço desculpas, sou novo no uso de servidores e comandos Linux. O aplicativo não estava em execução, então eu faço:

./launcher start app
x86_64 arch detected.                                                                                           starting up existing container                          
+ /usr/bin/docker start app
app

Depois disso:

./launcher enter app

E então, seguindo suas indicações, primeiro erro:

sudo postgres            
sudo: postgres: command not found

Se eu digitar psql:

psql: error: FATAL: database "root" does not exist

Desculpe. Estou no meu celular e não estou pensando bem o suficiente para explicar…

Depois de iniciar o aplicativo

su - postgres
psql discourse

E então o

 drop table discourse_reactions_reactions ;

E então digite exit ou control-d algumas vezes para sair de tudo

De nada! Quando eu esvazio uma tabela, outra me dá um erro. Já esvaziei cerca de 3 tabelas… Devo continuar fazendo isso uma por uma? Muito obrigado pela sua ajuda.

Hmm. Espero que você tenha um backup. Mas talvez? Não faz sentido que as migrações estivessem tão fora de sincronia.

1 curtida

Eu mesmo me respondo. Após esvaziar 7 tabelas (discourse_reactions_reactions, directory_columns, external_upload_stubs, associated_groups, user_associated_groups, group_associated_groups, discourse_reactions_reaction_users) o site está funcionando. Eu também restaurei o último backup!

Obrigado a todos pela ajuda! Tenham um bom fim de semana :slight_smile:

2 curtidas

Mas você conseguiu atualizar para a versão mais recente?

1 curtida