Sito offline dopo aggiornamento fallito: permesso negato per creare estensione "unaccent"

L’aggiornamento tramite interfaccia web è fallito con questo errore:

INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
discourse@discourse ERROR: permission denied to create extension "unaccent"
discourse@discourse HINT: Must be superuser to create this extension.
discourse@discourse STATEMENT: CREATE EXTENSION IF NOT EXISTS unaccent
rake aborted!
PG::InsufficientPrivilege: ERROR: permission denied to create extension "unaccent"
HINT: Must be superuser to create this extension.

Molto tempo fa ho modificato il mio app.yml, il che potrebbe causare il problema:

templates:
  # commentato per risolvere il problema dello spazio su disco
  #- "templates/postgres.template.yml"
  - "templates/postgres.10.template.yml"

Ho apportato questa modifica molto tempo fa, quindi oltre a quel commento, non ricordo la situazione.
Ho lasciato perdere e ho provato a tornare alla versione di discourse che avevo prima di ricevere l’errore di aggiornamento modificando la versione di app.yml a v2.8.0beta8, ma questo fallisce con

Pups::ExecError: cd /var/www/discourse & git checkout v2.8.0.beta8 failed with return #<Process::Status: pid 1843 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"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"]}}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
5b66f706de1a3ce8d78f0ed886669095c1a356efd916cb2ae8b02171367b0a01

Quindi penso che dovrei aggiornare postgres da 10, o fare il downgrade di discourse a 2.8.0beta8, entrambi falliscono. Cosa dovrei fare?

Come è stato installato questo server?

Hai apportato modifiche alla configurazione di Postgres?

Se sei ancora su Postgres 10, prova ad aggiungere quanto segue dopo la sezione hooks: nel tuo app.yml:


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

2 Mi Piace

Abbiamo abbandonato PostgreSQL 10 nel 2020. Ti esorto ad aggiornare il prima possibile.

3 Mi Piace

C’è qualche indicazione su come farlo? C’è di più oltre a ripristinare quella riga di app.yml?

Il link nel mio post è la guida su quello, tuttavia ci siamo anche spostati su Aggiornamento PostgreSQL 13 quindi segui quello nuovo.

4 Mi Piace

Questo lo ha risolto per me, e poi sono stato in grado di aggiornare postgres seguendo le istruzioni di @Falco.

4 Mi Piace

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