Problème de restauration : la relation « theme_fields » n'existe pas

@tgxworld, I think this is in your wheelhouse.
Trying to restore a backup from Discourse 2.1.0.beta5 - https://github.com/discourse/discourse version 8da2d8df3d5f7196f1c267b8a664597a725241ac or "Discourse 2.1.0.beta5 - https://github.com/discourse/discourse version bed34b52b51ab903bcb7854cc1efb2bf4107ddfb" to f4ae53d52b70a6577a60388f3550f168a4706b5f

I get

# discourse restore mineral-rights-forum-2018-08-23-033241-v20180812150839.tar.gz
bundler: failed to load command: script/discourse (script/discourse)
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "theme_fields" does not exist
LINE 8:                WHERE a.attrelid = '"theme_fields"'::regclass
                                          ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
                     c.collname, col_description(a.attrelid, a.attnum) AS comment
                FROM pg_attribute a
                LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
                LEFT JOIN pg_type t ON a.atttypid = t.oid
                LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
               WHERE a.attrelid = '"theme_fields"'::regclass
                 AND a.attnum > 0 AND NOT a.attisdropped
               ORDER BY a.attnum

I tried restoring a backup from Beta 4 and it fails the same way, so I think it’s a problem with the current Discourse restoring, not the way that backups are created.

EDIT: It looks like the first time that I restore it works, but if I restore again, it fails. I’ve not yet tested this on more than one database.

Going to have to ship this into the support category, there could be some sort of bug here, but we need a proper repro that works consistently.

Can you consistently make this fail?

1 « J'aime »

Je rencontre moi aussi ce problème maintenant.

Ce que j’ai fait :

J’ai effectué une sauvegarde avec Discourse 2.5.0.beta4.

En tant que root

git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
cp /var/production-backup/var/discourse/containers/app.yml /var/discourse/containers/
mkdir -p /var/discourse/shared/standalone/backups/default/
cp /var/production-backup/var/discourse/shared/standalone/backups/default/whonix-forum-2020-05-21-132423-v20200506044956.tar.gz /var/discourse/shared/standalone/backups/default/
./launcher enter app
discourse enable_restore
discourse restore whonix-forum-2020-05-21-132423-v20200506044956.tar.gz

Résultat :

root@host-app:/var/www/discourse# discourse restore whonix-forum-2020-05-21-132423-v20200506044956.tar.gz
bundler: failed to load command: script/discourse (script/discourse)
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "theme_fields" does not exist
LINE 8:  WHERE a.attrelid = '"theme_fields"'::regclass
                            ^

  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.1/lib/patches/db/pg.rb:110:in `exec'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.1/lib/patches/db/pg.rb:110:in `async_exec'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:65:in `block (2 levels) in query'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:64:in `block in query'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:722:in `block (2 levels) in log'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:721:in `block in log'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:712:in `log'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/postgresql/database_statements.rb:63:in `query'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/postgresql_adapter.rb:820:in `column_definitions'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:114:in `columns'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/schema_cache.rb:76:in `columns'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/connection_adapters/schema_cache.rb:82:in `columns_hash'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/model_schema.rb:488:in `load_schema!'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/attributes.rb:247:in `load_schema!'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/attribute_decorators.rb:50:in `load_schema!'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/model_schema.rb:478:in `block in load_schema'
  /usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/model_schema.rb:475:in `load_schema'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/model_schema.rb:352:in `columns_hash'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/dynamic_matchers.rb:60:in `block in valid?'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/dynamic_matchers.rb:60:in `all?'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/dynamic_matchers.rb:60:in `valid?'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/dynamic_matchers.rb:11:in `respond_to_missing?'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/scoping/named.rb:209:in `respond_to?'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/scoping/named.rb:209:in `valid_scope_name?'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/scoping/named.rb:187:in `scope'
  /var/www/discourse/app/models/theme_field.rb:8:in `<class:ThemeField>'
  /var/www/discourse/app/models/theme_field.rb:3:in `<top (required)>'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/kernel.rb:16:in `require'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/kernel.rb:16:in `require'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:381:in `const_get'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:381:in `block (2 levels) in eager_load'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:723:in `block in ls'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:720:in `foreach'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:720:in `ls'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:376:in `block in eager_load'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:368:in `synchronize'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:368:in `eager_load'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:483:in `each'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:483:in `eager_load_all'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3/lib/rails/application/finisher.rb:122:in `block in <module:Finisher>'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3/lib/rails/initializable.rb:32:in `instance_exec'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3/lib/rails/initializable.rb:32:in `run'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3/lib/rails/initializable.rb:61:in `block in run_initializers'
  /usr/local/lib/ruby/2.6.0/tsort.rb:228:in `block in tsort_each'
  /usr/local/lib/ruby/2.6.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
  /usr/local/lib/ruby/2.6.0/tsort.rb:431:in `each_strongly_connected_component_from'
  /usr/local/lib/ruby/2.6.0/tsort.rb:349:in `block in each_strongly_connected_component'
  /usr/local/lib/ruby/2.6.0/tsort.rb:347:in `each'
  /usr/local/lib/ruby/2.6.0/tsort.rb:347:in `call'
  /usr/local/lib/ruby/2.6.0/tsort.rb:347:in `each_strongly_connected_component'
  /usr/local/lib/ruby/2.6.0/tsort.rb:226:in `tsort_each'
  /usr/local/lib/ruby/2.6.0/tsort.rb:205:in `tsort_each'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3/lib/rails/initializable.rb:60:in `run_initializers'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3/lib/rails/application.rb:363:in `initialize!'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3/lib/rails/railtie.rb:190:in `public_send'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3/lib/rails/railtie.rb:190:in `method_missing'
  /var/www/discourse/config/environment.rb:7:in `<top (required)>'
  script/discourse:264:in `require'
  script/discourse:264:in `load_rails'
  script/discourse:119:in `restore'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
  /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/base.rb:485:in `start'
  script/discourse:284:in `<top (required)>'
root@host-app:/var/www/discourse#

C’est arrivé deux fois. Je ne sais pas comment procéder à partir de là.

Pouvez-vous le restaurer via l’interface utilisateur ?

1 « J'aime »

Non.

> [2020-05-22 12:11:36] 'Patrick' a lancé la restauration !
> [2020-05-22 12:11:36] Marquage de la restauration comme en cours...
> [2020-05-22 12:11:36] Vérification de l'existence de /var/www/discourse/tmp/restores/default/2020-05-22-121136...
> [2020-05-22 12:11:36] Copie de l'archive vers le répertoire tmp...
> [2020-05-22 12:11:40] Décompression de l'archive, cela peut prendre un certain temps...
> [2020-05-22 12:11:47] Extraction du fichier dump...
> [2020-05-22 12:11:58] Validation des métadonnées...
> [2020-05-22 12:11:58]   Version actuelle : 20200522004855
> [2020-05-22 12:11:58]   Version restaurée : 20200506044956
> [2020-05-22 12:11:58] Activation du mode lecture seule...
> [2020-05-22 12:11:58] Mise en pause de Sidekiq...
> [2020-05-22 12:11:58] Attente d'un maximum de 60 secondes pour que Sidekiq termine l'exécution des tâches...
> [2020-05-22 12:12:06] Création des fonctions manquantes dans le schéma discourse_functions...

Puis, même plusieurs heures plus tard, rien ne se passe.

Actualiser la page.

Oups

Le logiciel qui alimente ce forum de discussion a rencontré un problème inattendu. Nous nous excusons pour ce désagrément.

Des informations détaillées sur l’erreur ont été enregistrées et une notification automatique a été générée. Nous allons l’examiner.

Aucune action supplémentaire n’est nécessaire. Cependant, si le problème persiste, vous pouvez fournir des détails supplémentaires, y compris les étapes pour reproduire l’erreur, en publiant un sujet de discussion dans la catégorie de retour d’information du site.

root@whonix:/var/discourse# ./launcher logs app
> run-parts : exécution de /etc/runit/1.d/00-ensure-links
> run-parts : exécution de /etc/runit/1.d/00-fix-var-logs
> run-parts : exécution de /etc/runit/1.d/anacron
> run-parts : exécution de /etc/runit/1.d/cleanup-pids
> Nettoyage des fichiers PID obsolètes
> run-parts : exécution de /etc/runit/1.d/copy-env
> runsvdir démarré, PID est 38
> ok : run : redis : (pid 52) 0s
> ok : run : postgres : (pid 51) 0s
> chgrp : groupe invalide : 'syslog'
> rsyslogd : imklog : impossible d'ouvrir le journal du noyau (/proc/kmsg) : Opération non autorisée.
> rsyslogd : échec de l'activation du module imklog [v8.1901.0 consulter https://www.rsyslog.com/e/2145 ]
> pid du superviseur : 47 pid d'unicorn : 77
> root@whonix:/var/discourse# 
`root@whonix:/var/discourse# ./launcher enter app`

Possible.

root@whonix-app:/var/www/discourse#

tail shared/standalone/log/rails/production.log
Erreur inattendue dans Message Bus : PG::UndefinedTable : ERREUR : la relation "user_auth_tokens" n'existe pas
LINE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
                                         ^

Exception de tâche : PG::UndefinedTable : ERREUR : la relation "application_requests" n'existe pas
LINE 1: SELECT "application_requests"."id" FROM "application_request...

Quelque chose ne va pas avec votre sauvegarde.

Pouvez-vous l’extraire localement et la charger dans une base de données PostgreSQL ? L’archive gzip contient 2 fichiers : une sauvegarde de PostgreSQL et un répertoire uploads.

1 « J'aime »

Merci pour votre aide !

J’ai créé une nouvelle sauvegarde à partir de l’ancien serveur de production qui fonctionne toujours parfaitement.

J’ai purgé à la fois Docker et Discourse du serveur de staging plus récent. Puis j’ai réinstallé Docker et Discourse conformément aux instructions officielles. Ensuite, j’ai suivi les instructions de restauration en ligne de commande.

La sauvegarde a été créée avec docker-engine 17.05.0~ce-0~debian-stretch et doit être restaurée avec docker-ce-cli 5:19.03.9~3-0~debian-buster. Cela entraîne également une version plus récente de PostgreSQL (ancienne : 10 ; nouvelle : 12).

Est-ce une approche légitime de sauvegarder une version obsolète de Docker/PostgreSQL et de tenter une restauration sur une installation Docker/Discourse à jour ?

Cette fois, j’obtiens une erreur différente.

ERROR:  could not create unique index "index_incoming_referers_on_path_and_incoming_domain_id"
DETAIL:  Key (path, incoming_domain_id)=(/wiki/Tor_Browser, 3) is duplicated.
EXCEPTION: psql failed: DETAIL:  Key (path, incoming_domain_id)=(/wiki/Tor_Browser, 3) is duplicated.

Journal complet :

root@whonix-app:/var/www/discourse# discourse restore whonix-forum-2020-05-25-065253-v20200506044956.tar.gz
Starting restore: whonix-forum-2020-05-25-065253-v20200506044956.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2020-05-25-132224 exists...
Copying archive to tmp directory...
Unzipping archive, this may take a while...
Extracting dump file...
Validating metadata...
  Current version: 20200524181959
  Restored version: 20200506044956
Enabling readonly mode...
Pausing sidekiq...
Waiting up to 60 seconds for Sidekiq to finish running jobs...
Creating missing functions in the discourse_functions schema...
Restoring dump file... (this may take a while)
[cut]
ALTER TABLE
[cut lots of duplicate ALTER TABLE lines]
ALTER TABLE
CREATE INDEX
[cut lots of duplicate CREATE INDEX lines]
CREATE INDEX
ERROR:  could not create unique index "index_incoming_referers_on_path_and_incoming_domain_id"
DETAIL:  Key (path, incoming_domain_id)=(/wiki/Tor_Browser, 3) is duplicated.
EXCEPTION: psql failed: DETAIL:  Key (path, incoming_domain_id)=(/wiki/Tor_Browser, 3) is duplicated.
/var/www/discourse/lib/backup_restore/database_restorer.rb:95:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:49:in `run'
script/discourse:143:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/base.rb:485:in `start'
script/discourse:284:in `<top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:46:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:34:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Trying to rollback...
Rolling back...
Cleaning stuff up...
Dropping functions from the discourse_functions schema...
Removing tmp '/var/www/discourse/tmp/restores/default/2020-05-25-132224' directory...
Unpausing sidekiq...
Disabling readonly mode...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.
root@whonix-app:/var/www/discourse#

Je me demande comment c’est possible puisque mon ancien serveur de production Discourse fonctionne toujours parfaitement. Et c’est la deuxième sauvegarde que j’essaie.

PostgreSQL 10 ou PostgreSQL 12 ?


MODIF :

root@whonix-app:/var/www/discourse# rails c
[1] pry(main)> IncomingReferer.where(path: "/wiki/Tor_Browser")
=> [#<IncomingReferer:0x0000561cba422f48
  id: 11361,
  path: "/wiki/Tor_Browser",
  incoming_domain_id: 3>]
[2] pry(main)> 

MODIF2 :

[6] pry(main)> IncomingReferer.where("path LIKE '%/wiki/Tor_Browser%'")
=> [#<IncomingReferer:0x0000561cc08882a8
  id: 19,
  path: "/wiki/Tor_Browser",
  incoming_domain_id: 3>,
 #<IncomingReferer:0x0000561cc08b3f48
  id: 67,
  path: "/wiki/Tor_Browser/Download_Confirmation_Screen",
  incoming_domain_id: 3>,
 #<IncomingReferer:0x0000561cc08b3e08
  id: 331,
  path: "/wiki/Tor_Browser/Internal_Updater",
  incoming_domain_id: 3>,
 #<IncomingReferer:0x0000561cc08b3cf0
  id: 489,
  path: "/wiki/Tor_Browser",

<page break> --- Appuyez sur Entrée pour continuer ( q<enter> pour quitter ) --- <page break>

  incoming_domain_id: 113>,
 #<IncomingReferer:0x0000561cc08b3bb0
  id: 2957,
  path: "/wiki/Tor_Browser/Advanced_Users",
  incoming_domain_id: 617>,
 #<IncomingReferer:0x0000561cc08b3a70
  id: 4052,
  path: "/wiki/Tor_Browser",
  incoming_domain_id: 617>,
 #<IncomingReferer:0x0000561cc08b38e0
  id: 4196,
  path: "/wiki/Tor_Browser",
  incoming_domain_id: 1513>,
 #<IncomingReferer:0x0000561cc08b37f0
  id: 4220,

<page break> --- Appuyez sur Entrée pour continuer ( q<enter> pour quitter ) --- <page break>

  path: "/wiki/Tor_Browser/Advanced_Users",
  incoming_domain_id: 1513>,
 #<IncomingReferer:0x0000561cc08b3700
  id: 4307,
  path: "/wiki/Tor_Browser",
  incoming_domain_id: 1552>,
 #<IncomingReferer:0x0000561cc08b34a8
  id: 4346,
  path: "/wiki/Tor_Browser/Advanced_Users",
  incoming_domain_id: 1552>,
 #<IncomingReferer:0x0000561cc08b3318
  id: 8713,
  path: "/wiki/Tor_Browser/Advanced_Users",
  incoming_domain_id: 3>,
 #<IncomingReferer:0x0000561cc08b3188

<page break> --- Appuyez sur Entrée pour continuer ( q<enter> pour quitter ) --- <page break>

  id: 9746,
  path: "/wiki/Tor_Browser_without_Tor",
  incoming_domain_id: 3>,
 #<IncomingReferer:0x0000561cc08b2f08
  id: 10248,
  path: "/wiki/Tor_Browser_without_Tor",
  incoming_domain_id: 113>,
 #<IncomingReferer:0x0000561cc08b2cb0
  id: 11361,
  path: "/wiki/Tor_Browser",
  incoming_domain_id: 3>,
 #<IncomingReferer:0x0000561cc08b2bc0
  id: 11754,
  path: "/wiki/Tor_Browser/Advanced_Users",
  incoming_domain_id: 113>,

<page break> --- Appuyez sur Entrée pour continuer ( q<enter> pour quitter ) --- <page break>

 #<IncomingReferer:0x0000561cc08b2ad0
  id: 12094,
  path: "/wiki/Tor_Browser/Advanced_Users",
  incoming_domain_id: 4560>,
 #<IncomingReferer:0x0000561cc08b28f0
  id: 12892,
  path: "/wiki/Tor_Browser",
  incoming_domain_id: 4559>,
 #<IncomingReferer:0x0000561cc08b25f8
  id: 13038,
  path: "/wiki/Tor_Browser",
  incoming_domain_id: 4560>]
[7] pry(main)> 
[8] pry(main)>

Oui, cela est pris en charge.

Corrupt indexes in PG12, how do I fix?

2 « J'aime »

Je rencontre la même erreur que l’OP concernant « theme_fields », même sur une toute nouvelle installation de Discourse.

E, [2020-06-04T16:32:44.492756 #2024] ERROR -- : PG::UndefinedTable: ERROR:  relation "theme_fields" does not exist
LINE 8:  WHERE a.attrelid = '"theme_fields"'::regclass
                            ^
 (ActiveRecord::StatementInvalid)
/app/.global/gems/rack-mini-profiler-2.0.2/lib/patches/db/pg.rb:110:in `exec'
/app/.global/gems/rack-mini-profiler-2.0.2/lib/patches/db/pg.rb:110:in `async_exec'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:65:in `block (2 levels) in query'
/app/.global/gems/activesupport-6.0.1/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/app/.global/gems/activesupport-6.0.1/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/app/.global/gems/activesupport-6.0.1/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:64:in `block in query'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:718:in `block (2 levels) in log'
/opt/ruby/2.6/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:717:in `block in log'
/app/.global/gems/activesupport-6.0.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:708:in `log'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:63:in `query'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:817:in `column_definitions'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:114:in `columns'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/schema_cache.rb:76:in `columns'
/app/.global/gems/activerecord-6.0.1/lib/active_record/connection_adapters/schema_cache.rb:82:in `columns_hash'
/app/.global/gems/activerecord-6.0.1/lib/active_record/model_schema.rb:490:in `load_schema!'
/app/.global/gems/activerecord-6.0.1/lib/active_record/attributes.rb:247:in `load_schema!'
/app/.global/gems/activerecord-6.0.1/lib/active_record/attribute_decorators.rb:51:in `load_schema!'
/app/.global/gems/activerecord-6.0.1/lib/active_record/model_schema.rb:480:in `block in load_schema'
/opt/ruby/2.6/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/app/.global/gems/activerecord-6.0.1/lib/active_record/model_schema.rb:477:in `load_schema'
/app/.global/gems/activerecord-6.0.1/lib/active_record/model_schema.rb:352:in `columns_hash'
/app/.global/gems/activerecord-6.0.1/lib/active_record/dynamic_matchers.rb:60:in `block in valid?'
/app/.global/gems/activerecord-6.0.1/lib/active_record/dynamic_matchers.rb:60:in `all?'
/app/.global/gems/activerecord-6.0.1/lib/active_record/dynamic_matchers.rb:60:in `valid?'
/app/.global/gems/activerecord-6.0.1/lib/active_record/dynamic_matchers.rb:11:in `respond_to_missing?'
/app/.global/gems/activerecord-6.0.1/lib/active_record/scoping/named.rb:209:in `respond_to?'
/app/.global/gems/activerecord-6.0.1/lib/active_record/scoping/named.rb:209:in `valid_scope_name?'
/app/.global/gems/activerecord-6.0.1/lib/active_record/scoping/named.rb:186:in `scope'
/app/app/models/theme_field.rb:8:in `<class:ThemeField>'
/app/app/models/theme_field.rb:3:in `<top (required)>'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/kernel.rb:16:in `require'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/kernel.rb:16:in `require'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:381:in `const_get'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:381:in `block (2 levels) in eager_load'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:723:in `block in ls'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:720:in `foreach'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:720:in `ls'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:376:in `block in eager_load'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:368:in `synchronize'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:368:in `eager_load'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:483:in `each'
/app/.global/gems/zeitwerk-2.3.0/lib/zeitwerk/loader.rb:483:in `eager_load_all'
/app/.global/gems/railties-6.0.1/lib/rails/application/finisher.rb:122:in `block in <module:Finisher>'
/app/.global/gems/railties-6.0.1/lib/rails/initializable.rb:32:in `instance_exec'
/app/.global/gems/railties-6.0.1/lib/rails/initializable.rb:32:in `run'
/app/.global/gems/railties-6.0.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/opt/ruby/2.6/lib/ruby/2.6.0/tsort.rb:228:in `block in tsort_each'
/opt/ruby/2.6/lib/ruby/2.6.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/opt/ruby/2.6/lib/ruby/2.6.0/tsort.rb:431:in `each_strongly_connected_component_from'
/opt/ruby/2.6/lib/ruby/2.6.0/tsort.rb:349:in `block in each_strongly_connected_component'
/opt/ruby/2.6/lib/ruby/2.6.0/tsort.rb:347:in `each'
/opt/ruby/2.6/lib/ruby/2.6.0/tsort.rb:347:in `call'
/opt/ruby/2.6/lib/ruby/2.6.0/tsort.rb:347:in `each_strongly_connected_component'
/opt/ruby/2.6/lib/ruby/2.6.0/tsort.rb:226:in `tsort_each'
/opt/ruby/2.6/lib/ruby/2.6.0/tsort.rb:205:in `tsort_each'
/app/.global/gems/railties-6.0.1/lib/rails/initializable.rb:60:in `run_initializers'
/app/.global/gems/railties-6.0.1/lib/rails/application.rb:363:in `initialize!'
/app/.global/gems/railties-6.0.1/lib/rails/railtie.rb:190:in `public_send'
/app/.global/gems/railties-6.0.1/lib/rails/railtie.rb:190:in `method_missing'
/app/config/environment.rb:7:in `<top (required)>'

Je vois ce message se répéter à de nombreuses reprises dans mon journal d’application. Je ne suis pas clair sur ce qui le déclenche. J’utilise PostgreSQL 9.6, au cas où cela aurait de l’importance.

Utilisez-vous la dernière version de Discourse ? S’agit-il d’une mise à niveau depuis une version très ancienne de Discourse ?

Ceci est une toute nouvelle installation fraîche de Discourse 2.4, sans aucune version précédente.

J’ai également essayé de passer à Postgres 12. L’erreur apparaît toujours dans mes journaux.

1 « J'aime »