Error al actualizar, fallo al iniciar

Hola! Tengo un problema con la última actualización:

FAILED -------------------- Pups::ExecError: cd /var/www/discourse & su discourse -c ‘bundle exec rake db:migrate’ falló con retorno #<Process::Status: pid 690 exit 1> Ubicación del fallo: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’ exec falló con los parámetros {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]} 7027ff0ccd166f831f9728472676ad91704fdd4caa6833a219d44697e740acdc ** FALLÓ EL ARRANQUE ** por favor, desplázate hacia arriba y busca mensajes de error anteriores, puede haber más de uno. ./discourse-doctor puede ayudar a diagnosticar el problema.

Sideqik también se detuvo.

¿Alguien puede ayudarme? ¡Gracias!

P.D. el sitio es llastres.com

2 Me gusta

¿Puedes hacer lo que dice el mensaje y

Necesitamos el registro completo para poder solucionar el problema.

3 Me gusta

Ok, ¿cómo puedo identificarlos? ¿Buscando la palabra “error”? Si me dices cómo ejecutar el registro, lo adjuntaré. Soy nuevo en el uso de servidores. Muchas gracias por tu ayuda.

Editar, encontré esto:

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

¿Puedes compartir tu archivo app.yml?

3 Me gusta

Lo siento, estaba en el trabajo. Este es mi app.yml:

## esta es la plantilla de contenedor Docker de Discourse todo en uno y autónoma
##
## Después de realizar cambios en este archivo, DEBE reconstruir
## /var/discourse/launcher rebuild app
##
## ¡TENGA MUCHO CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON SÚPER SÚPER SENSIBLES A ERRORES EN ESPACIOS EN BLANCO O ALINEACIÓN!
## visite http://www.yamllint.com/ para validar este archivo según sea necesario

plantillas:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente estas dos líneas si desea agregar Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## ¿qué puertos TCP/IP debe exponer este contenedor?
## Si desea que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulte https://meta.discourse.org/t/17247 para obtener detalles
exponer:
  - "80:80"   # http
  - "443:443" # https

parámetros:
  db_default_text_search_config: "pg_catalog.spanish"

  ## Establezca db_shared_buffers en un máximo del 25% de la memoria total.
  ## será configurado automáticamente por bootstrap según la RAM detectada, o puede anularlo
  db_shared_buffers: "2048MB"

  ## puede mejorar el rendimiento de la clasificación, pero aumenta el uso de memoria por conexión
  #db_work_mem: "40MB"

  ## ¿Qué revisión de Git debe usar este contenedor? (predeterminado: tests-passed)
  #version: tests-passed

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

  ## ¿Cuántas solicitudes web concurrentes se admiten? Depende de la memoria y los núcleos de CPU.
  ## será configurado automáticamente por bootstrap según las CPU detectadas, o puede anularlo
  UNICORN_WORKERS: 8

  ## TODO: El nombre de dominio al que responderá esta instancia de Discourse
  ## Requerido. Discourse no funcionará con un número IP simple.
  DISCOURSE_HOSTNAME: EDITED

  ## Descomente si desea que el contenedor se inicie con el mismo
  ## nombre de host (-h option) que el especificado anteriormente (predeterminado "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de correos electrónicos separados por comas que se convertirán en administradores y desarrolladores
  ## en el registro inicial, ejemplo 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'EDITADO'

  ## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
  # La DIRECCIÓN SMTP, el nombre de usuario y la contraseña son requeridos
  # ADVERTENCIA: el carácter '#' en la contraseña SMTP puede 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, predeterminado true)
  DISCOURSE_SMTP_DOMAIN: EDITED
  DISCOURSE_NOTIFICATION_EMAIL: EDITED

  ## Si agregó la plantilla Lets Encrypt, descomente a continuación para obtener un certificado SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: EDITED

  ## La dirección CDN http o https para esta instancia de Discourse (configurada para tirar)
  ## consulte https://meta.discourse.org/t/14857 para obtener detalles
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## La clave de dirección IP de geolocalización de Maxmind para la búsqueda de direcciones IP
  ## consulte https://meta.discourse.org/t/-/137387/23 para obtener detalles
  DISCOURSE_MAXMIND_LICENSE_KEY: EDITED
## El contenedor Docker no tiene estado; todos los datos se almacenan en /shared
volúmenes:
  - volumen:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volumen:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Los plugins van aquí
## consulte https://meta.discourse.org/t/19157 para obtener detalles
ganchos:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-reactions
## Cualquier comando personalizado para ejecutar después de la compilación
ejecutar:
  - exec: echo "Comienzo de comandos personalizados"
  ## Si desea establecer la dirección de correo electrónico 'De' para su primer registro, descomente y cambie:
  ## Después de recibir el primer correo electrónico de registro, vuelva a comentar la línea. Solo necesita ejecutarse una vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin de comandos personalizados"
1 me gusta

La verdad es que nunca he tenido ningún problema al actualizar. No estaba haciendo nada raro, simplemente actualicé el sistema y me apareció la advertencia de que se había producido un error.

Este es el log completo:

1 me gusta

Tiene problemas para ejecutar una migración de mayo de 2021. ¿Se trasladó este sitio entre los canales de lanzamiento (beta/estable/tests-passed) o se restauró a partir de una copia de seguridad en algún momento?

1 me gusta

Creo recordar que migramos de mybb en esa fecha (21 de mayo)

Sí, es cierto que hoy intenté recuperar una copia de seguridad de principios de mes para intentar tener una copia funcional antes del error, pero al hacer clic en iniciar, apareció una pantalla de error.

Disculpad si mi escritura es extraña, estoy usando un traductor.

2 Me gusta

Todavía no encuentro una solución y los foros siguen caídos, ¿alguna idea de qué hacer a partir de aquí? ¡¡Gracias!!

2 Me gusta

Mi foro se cayó después de la actualización. La actualización parece haber ido bien, pero cuando fui a la página del foro, la página estaba en blanco.

La actualicé manualmente, y el foro funcionaba bien. No sé si esto te ayudará o no.

2 Me gusta

Gracias por tu respuesta. Creo que mi problema está relacionado con un error de base de datos relacionado con la migración de los foros. La reconstrucción de la aplicación no funciona.

He consultado las preguntas frecuentes y los manuales, pero no encuentro ninguna solución.

Tengo algunas copias de seguridad anteriores (creo) al error, pero no puedo cargarlas porque la aplicación no se ejecuta. Solo se me ocurre borrar todo, hacer una instalación limpia y cargar una copia de seguridad…

1 me gusta

Tener una copia de seguridad y, considerando que no puedo ejecutar la aplicación (para restaurar la copia de seguridad), ¿qué puedo hacer? ¿No veo otra alternativa que eliminar Docker y empezar de nuevo?

1 me gusta

El único tema que pude encontrar con un problema similar fue Unable to login into discourse suddenly - #8 by Tarek_Khalil, y el consejo fue restaurar una copia de seguridad de antes del error de migración, lo que puede no ser la mejor opción en tu caso, ya que fue hace algún tiempo.

Me temo que los errores de base de datos están fuera de mi área de especialización. @pfaffman y @RGJ normalmente son muy buenos en esto (aunque no sé si es algo que hayan encontrado antes). ¿Tienen algún truco bajo la manga para esto?

2 Me gusta

Lo que quieres hacer es entrar en postgres y eliminar esa tabla.

A grandes rasgos, es algo así como

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

Y luego deberías poder ejecutar la actualización.

Editar: ¡pero espero que primero hagas una copia de seguridad solo de la base de datos por si acaso!

4 Me gusta

Lo siento, soy nuevo en el uso de servidores y comandos de Linux. La aplicación no se estaba ejecutando, así que hago:

./launcher start app
Se detectó la arquitectura x86_64.                                                                                           iniciando contenedor existente
+ /usr/bin/docker start app
app

Después de eso:

./launcher enter app

Y luego, siguiendo tus indicaciones, primer error:

sudo postgres
sudo: postgres: comando no encontrado

Si escribo psql:

psql: error: FATAL: la base de datos «root» no existe

Lo siento. Estoy en mi teléfono y no estoy pensando bien para explicar…

Después de iniciar la aplicación

su - postgres
psql discourse

Y luego el

 drop table discourse_reactions_reactions ;

Y luego escribe exit o control-d unas cuantas veces para salir de todo.

¡De nada! Cuando vacié una tabla, otra me dio un error. Ya he vaciado unas 3 tablas… ¿Debo seguir haciéndolo una por una? Muchas gracias por tu ayuda.

Hmm. Espero que tengas una copia de seguridad. ¿Pero quizás? No tiene sentido que las migraciones estén tan desfasadas.

1 me gusta

Me respondo. Después de vaciar 7 tablas (discourse_reactions_reactions, directory_columns, external_upload_stubs, associated_groups, user_associated_groups, group_associated_groups, discourse_reactions_reaction_users) el sitio funciona. ¡También restauré la última copia de seguridad!

¡Gracias a todos por vuestra ayuda! Que tengáis un buen fin de semana :slight_smile:

2 Me gusta

Pero, ¿pudiste actualizar a la última versión?

1 me gusta