Site hors service après une mise à jour échouée : permission refusée de créer l'extension "unaccent"

La mise à niveau via l’interface utilisateur web a échoué avec cette erreur :

INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
discourse@discourse ERREUR : permission refusée de créer l'extension « unaccent »
discourse@discourse INDICE : Doit être superutilisateur pour créer cette extension.
discourse@discourse INSTRUCTION : CREATE EXTENSION IF NOT EXISTS unaccent
rake aborted!
PG::InsufficientPrivilege: ERREUR : permission refusée de créer l'extension « unaccent »
INDICE : Doit être superutilisateur pour créer cette extension.

Il y a longtemps, j’ai modifié mon app.yml, ce qui pourrait causer le problème :

templates:
  # commenté pour résoudre le problème d'espace disque
  #- "templates/postgres.template.yml"
  - "templates/postgres.10.template.yml"

J’ai fait ce changement il y a longtemps, donc à part ce commentaire, je ne me souviens pas de la situation.

J’ai laissé cela de côté et j’ai essayé de revenir à la version de Discourse que j’avais avant de rencontrer l’erreur de mise à jour en modifiant la version de app.yml à v2.8.0beta8, mais cela échoue avec

Pups::ExecError: cd /var/www/discourse & git checkout v2.8.0.beta8 a échoué avec le retour #<Process::Status: pid 1843 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 »=>« code », « cmd »=>[« git reset --hard », « git clean -f », « git remote set-branches --add origin main », « git remote set-branches origin $version », « git fetch --depth 1 origin $version », « git checkout $version », « mkdir -p tmp », « chown discourse:www-data tmp », « mkdir -p tmp/pids », « mkdir -p tmp/sockets », « touch tmp/.gitkeep », « mkdir -p /shared/log/rails », « bash -c \\"touch -a /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\\" », « bash -c \\"ln -s /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\\" », « bash -c \\"mkdir -p /shared/{uploads,backups}\\" », « bash -c \\"ln -s /shared/{uploads,backups} $home/public\\" », « bash -c \\"mkdir -p /shared/tmp/{backups,restores}\\" », « bash -c \\"ln -s /shared/tmp/{backups,restores} $home/tmp\\" », « chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp », « find public/plugins/ -maxdepth 1 -xtype l -delete »]}
l'amorçage a échoué avec le code de sortie 1
** ÉCHEC DE L'AMORÇAGE ** 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.
5b66f706de1a3ce8d78f0ed886669095c1a356efd916cb2ae8b02171367b0a01

Je pense donc que je dois soit mettre à niveau postgres depuis la version 10, soit rétrograder Discourse à la version 2.8.0beta8, les deux échouent. Que dois-je faire ?

Comment ce serveur a-t-il été installé ?

Avez-vous apporté des modifications à la configuration de Postgres ?

Si vous êtes toujours sur Postgres 10, essayez d’ajouter ceci après la section hooks: dans votre app.yml :


a_pres_postgres:
    - exec: su postgres -c 'psql discourse -c "create extension if not exists unaccent;"'

2 « J'aime »

Nous avons abandonné PostgreSQL 10 en 2020. Je vous exhorte à mettre à jour dès que possible.

3 « J'aime »

Y a-t-il des instructions sur la façon de procéder ? Y a-t-il plus que de revenir sur cette ligne app.yml ?

Le lien sur mon post est le guide à ce sujet, cependant nous sommes également passés à la mise à jour PostgreSQL 13, suivez donc le nouveau.

4 « J'aime »

Cela l’a corrigé pour moi, et j’ai ensuite pu mettre à niveau postgres en suivant les instructions de @Falco.

4 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.