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 ?
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
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) ?
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.
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 ?