Sitio caído después de una actualización fallida: permiso denegado para crear la extensión "unaccent"

La actualización a través de la interfaz de usuario web falló con este error:

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.

Hace mucho tiempo edité mi app.yml, lo que podría estar causando el problema:

templates:
  # comentado para solucionar problema de espacio en disco
  #- "templates/postgres.template.yml"
  - "templates/postgres.10.template.yml"

Hice este cambio hace mucho tiempo, así que aparte de ese comentario, no recuerdo la situación.
Dejé eso y traté de revertir a la versión de Discourse que tenía antes de recibir el error de actualización editando la versión de app.yml a v2.8.0beta8, pero eso falla 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

Así que creo que necesito actualizar postgres desde la versión 10, o degradar Discourse a la versión 2.8.0beta8, ambas opciones fallan. ¿Qué debería hacer?

¿Cómo se instaló este servidor?

¿Ha realizado algún cambio en la configuración de Postgres?

Si todavía está en Postgres 10, intente agregar esto después de la sección hooks: en su app.yml:


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

2 Me gusta

Nos alejamos de PostgreSQL 10 en 2020. Te insto a que actualices lo antes posible.

3 Me gusta

¿Hay alguna guía sobre cómo hacer eso? ¿Hay algo más que revertir esa línea de app.yml?

El enlace en mi publicación es la guía sobre eso, sin embargo, también nos hemos mudado a Actualización de PostgreSQL 13, así que sigue la nueva.

4 Me gusta

Esto lo solucionó para mí, y luego pude actualizar postgres basándome en las instrucciones de @Falco.

4 Me gusta

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