Erreur lors de la mise à niveau, échec de l'amorçage

Salut ! J’ai un problème lors de la dernière mise à jour :

FAILED -------------------- Pups::ExecError : cd /var/www/discourse & su discourse -c ‘bundle exec rake db:migrate’ a échoué avec le retour #<Process::Status: pid 690 exit 1> Emplacement de l’échec : /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’ exec a échoué avec les paramètres {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]} 7027ff0ccd166f831f9728472676ad91704fdd4caa6833a219d44697e740acdc ** ÉCHEC DU DÉMARRAGE ** veuillez faire défiler vers le haut et rechercher les messages d’erreur précédents, il peut y en avoir plus d’un. ./discourse-doctor peut aider à diagnostiquer le problème.

Sideqik s’est également arrêté.

Quelqu’un peut-il m’aider ? Merci !!

P.S. le site est llastres.com

2 « J'aime »

Pouvez-vous faire ce que le message dit et

Nous avons besoin du journal entier pour pouvoir dépanner.

3 « J'aime »

Ok, comment puis-je les identifier ? En recherchant le mot « error » ? Si vous me dites comment exécuter le journal, je le joindrai. Je suis nouveau dans l’utilisation des serveurs. Merci beaucoup pour votre aide.

Edit, j’ai trouvé ceci :

Caused by:                                              
PG::DuplicateTable: ERROR:  relation "discourse_reactions_reactions" already exists
2 « J'aime »

Pouvez-vous partager votre fichier app.yml ?

3 « J'aime »

Désolé, j’étais au travail. Voici mon app.yml :

## voici le modèle de conteneur Docker Discourse tout-en-un et autonome
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild app
##
## SOYEZ TRÈS PRUDENT LORS DE LA MODIFICATION !
## LES FICHIERS YAML SONT EXTRÊMEMENT SENSIBLES AUX ERREURS D'ESPACEMENT OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## voir https://meta.discourse.org/t/17247 pour plus de détails
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.spanish"

  ## Définissez db_shared_buffers à un maximum de 25 % de la mémoire totale.
  ## sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
  db_shared_buffers: "2048MB"

  ## peut améliorer les performances de tri, mais augmente l'utilisation de la mémoire par connexion
  #db_work_mem: "40MB"

  ## Quelle révision Git ce conteneur doit-il utiliser ? (par défaut : 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

  ## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
  ## sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez le remplacer
  UNICORN_WORKERS: 8

  ## TODO : Le nom de domaine auquel cette instance Discourse répondra
  ## Requis. Discourse ne fonctionnera pas avec un simple numéro IP.
  DISCOURSE_HOSTNAME: EDITED

  ## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
  ## nom d'hôte (-h option) que celui spécifié ci-dessus (par défaut "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO : Liste des e-mails séparés par des virgules qui seront rendus administrateurs et développeurs
  ## lors de la première inscription, par exemple 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'EDITED'

  ## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
  # L'adresse, le nom d'utilisateur et le mot de passe SMTP sont requis
  # ATTENTION, le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
  DISCOURSE_SMTP_ADDRESS: EDITED
  DISCOURSE_SMTP_PORT: EDITED
  DISCOURSE_SMTP_USER_NAME: EDITED
  DISCOURSE_SMTP_PASSWORD: EDITED
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (facultatif, par défaut true)
  DISCOURSE_SMTP_DOMAIN: EDITED
  DISCOURSE_NOTIFICATION_EMAIL: EDITED

  ## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
  LETSENCRYPT_ACCOUNT_EMAIL: EDITED

  ## L'adresse CDN http ou https pour cette instance Discourse (configurée pour tirer)
  ## voir https://meta.discourse.org/t/14857 pour plus de détails
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## La clé d'adresse IP de géolocalisation Maxmind pour la recherche d'adresses IP
  ## voir https://meta.discourse.org/t/-/137387/23 pour plus de détails
  DISCOURSE_MAXMIND_LICENSE_KEY: EDITED
## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour plus de détails
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
## Toutes les commandes personnalisées à exécuter après la construction
run:
  - exec: echo "Début des commandes personnalisées"
  ## Si vous souhaitez définir l'adresse e-mail 'De' pour votre première inscription, décommentez et modifiez :
  ## Après avoir reçu le premier e-mail d'inscription, commentez à nouveau la ligne. Elle ne doit s'exécuter qu'une seule fois.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin des commandes personnalisées"
1 « J'aime »

La vérité est que je n’ai jamais eu de problème de mise à jour. Je ne faisais rien d’étrange, j’ai juste mis à jour le système et j’ai reçu l’avertissement qu’une erreur s’était produite.

Voici le journal complet :

1 « J'aime »

Il a du mal à exécuter une migration de mai 2021. Ce site a-t-il été déplacé entre les canaux de publication (bêta/stable/tests-passed) ou restauré à partir d’une sauvegarde à un moment donné ?

1 « J'aime »

Je me souviens que nous avons migré de mybb à cette date (21 mai)

Oui, il est vrai qu’aujourd’hui j’ai essayé de récupérer une sauvegarde du début du mois pour essayer d’avoir une copie fonctionnelle avant l’erreur, mais lorsque j’ai cliqué sur démarrer, un écran d’erreur est apparu.

Désolé si mon écriture est étrange, j’utilise un traducteur.

2 « J'aime »

Je n’arrive toujours pas à trouver de solution et les forums sont toujours hors service, une idée d’où aller à partir d’ici ? Merci !!

2 « J'aime »

Mon forum est tombé en panne après la mise à niveau. La mise à niveau semble s’être bien déroulée, mais lorsque je suis allé sur la page du forum, celle-ci était vide.

Je l’ai mis à jour manuellement, et le forum fonctionnait. Je ne sais pas si cela vous aidera ou non.

2 « J'aime »

Merci pour votre réponse. Je pense que mon problème est lié à une erreur de base de données concernant la migration des forums. La reconstruction de l’application ne fonctionne pas.

J’ai consulté la FAQ et les manuels, mais je n’ai trouvé aucune solution.

J’ai quelques sauvegardes datant d’avant (je pense) l’erreur, mais je ne peux pas les charger car l’application ne démarre pas. Je ne peux que penser à tout supprimer, faire une installation propre et charger une sauvegarde…

1 « J'aime »

Ayant une sauvegarde, et considérant que je ne peux pas exécuter l’application (pour restaurer la sauvegarde), que puis-je faire ? Je ne vois pas d’autre solution que de supprimer Docker et de recommencer ?

1 « J'aime »

Le seul sujet que j’ai pu trouver avec un problème similaire était Unable to login into discourse suddenly - #8 by Tarek_Khalil, et le conseil était de restaurer une sauvegarde datant d’avant le cafouillage de la migration, ce qui n’est peut-être pas la meilleure option dans votre cas car cela remonte à un certain temps.

Je crains que les erreurs de base de données ne sortent de mes compétences. @pfaffman et @RGJ sont normalement très bons pour cela (bien que je ne sache pas s’ils ont déjà rencontré ce problème). Avez-vous des astuces à proposer ?

2 « J'aime »

Ce que vous voulez faire, c’est accéder à postgres et supprimer cette table.

En gros, c’est quelque chose comme ça :

./launcher enter app 
sudo postgres
psql 
drop table la_table _mentionnée ci-dessus ;

Et ensuite, vous devriez pouvoir exécuter la mise à niveau.

Edit : mais espérons que vous ferez d’abord une sauvegarde uniquement de la base de données, au cas où !

4 « J'aime »

Je m’excuse, je suis nouveau dans l’utilisation des serveurs et des commandes Linux. L’application ne fonctionnait pas, j’ai donc fait :

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

Après cela :

./launcher enter app

Et ensuite, en suivant vos indications, première erreur :

sudo postgres            
sudo: postgres: command not found

Si je tape psql :

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

Désolé. Je suis sur mon téléphone et je ne pense pas assez clairement pour expliquer…

Après le démarrage de l’application

su - postgres 
psql discourse 

Et ensuite le

 drop table discourse_reactions_reactions ;

Et ensuite tapez exit ou control-d plusieurs fois pour sortir de tout.

De rien ! Lorsque je vide une table, une autre me donne une erreur. J’ai déjà vidé environ 3 tables… Dois-je continuer ainsi une par une ? Merci beaucoup pour votre aide.

Hmm. J’espère que vous avez une sauvegarde. Mais peut-être ? Il n’est pas logique que les migrations soient si désordonnées.

1 « J'aime »

Je me réponds. Après avoir vidé 7 tables (discourse_reactions_reactions, directory_columns, external_upload_stubs, associated_groups, user_associated_groups, group_associated_groups, discourse_reactions_reaction_users) le site est opérationnel. J’ai aussi restauré la dernière sauvegarde !

Merci à tous pour votre aide ! Passez un bon week-end :slight_smile:

2 « J'aime »

Mais avez-vous pu mettre à niveau vers la dernière version ?

1 « J'aime »