Migration vers un nouveau serveur : erreur avec la base de données

Nous essayons de tout déplacer vers un nouveau serveur. Après la migration, nous obtenons ce message en haut :

Lorsque j’essaie d’exécuter les commandes suivantes dans l’application :

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

Je reçois l’erreur suivante :

ActiveModel::MissingAttributeError: impossible d’écrire l’attribut inconnu ``
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' Caused by ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: identifiant délimité de longueur zéro à ou près de """" 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’
Caused by PG::SyntaxError: ERROR: identifiant délimité de longueur zéro à ou près de “”“”
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’

Avez-vous des idées pour finaliser l’installation ? Il semble qu’une table soit corrompue.

Peux-tu revenir en arrière et nous expliquer plus précisément ce que tu essaies de faire ? Est-ce avant ou après la restauration d’une sauvegarde ? Ou s’agit-il d’une nouvelle installation ?

Voici les étapes que nous avons suivies :

  1. Installation de la dernière version sur le nouveau serveur
  2. Mise du serveur ancien en lecture seule et création d’une sauvegarde
  3. Restauration de la sauvegarde sur le nouveau serveur

L’erreur se produit après l’étape 3, et nous avons répété le processus deux fois.

Avez-vous défini une adresse e-mail de développeur dans app.yml ? Avez-vous déjà essayé de reconstruire le conteneur ?

Oui. Discourse fonctionne correctement sans importer la migration. Aucune erreur. Après la restauration de la base de données de sauvegarde, les paramètres ne peuvent pas être modifiés car nous rencontrons une erreur, et la tentative d’activer l’e-mail du développeur n’envoie pas d’e-mail. C’est pourquoi j’essayais d’activer le compte manuellement, mais j’ai alors rencontré cette erreur.

Avez-vous exécuté ./launcher rebuild app après la restauration de la sauvegarde ? Ou êtes-vous entré dans le conteneur pour lancer rake db:migrate ? Cela pourrait aider, mais on ne peut pas en être certain avant d’essayer :smiley:

J’ai déjà exécuté l’application de reconstruction du lanceur, mais le problème persiste. Dois-je exécuter Rake depuis le serveur ou depuis l’intérieur de l’application (launcher enter app) ?

./launcher rebuild app fera la même chose.

Avez-vous toujours l’ancienne instance en cours d’exécution ? Si oui, la meilleure option à l’avenir est de détruire la nouvelle et de la reconstruire à partir d’une sauvegarde récente de l’ancienne instance.

Oui, l’ancien serveur est toujours en cours d’exécution. Après avoir investigué le problème plus en profondeur, cela se produit même sur l’ancien serveur. La même erreur apparaît. :face_with_raised_eyebrow:

Dois-je essayer de vider la table site_settings et de les réinitialiser manuellement ? Discourse fonctionnera-t-il après avoir supprimé tous les enregistrements de cette table manuellement depuis PostgreSQL ?

Je déconseille de le faire, sauf si vous savez exactement ce que vous faites.

Vous pourriez poster dans Marketplace pour obtenir une aide plus avancée. Il semble malheureusement que votre installation soit défectueuse.