Wiederherstellung aus Sicherung fehlgeschlagen: Fehler beim Erstellen des postgres-Index

Hallo zusammen,

ich betreibe Discourse seit mehreren Jahren problemlos.

Heute habe ich versucht, ein Upgrade über die Web-Oberfläche von der Version 2.4.0beta-something auf die aktuelle Version (2.5.0beta5) durchzuführen. Das… lief nicht gut. Ich habe mir keine guten Notizen gemacht, aber es schien so, als ob PostgreSQL nicht korrekt gestartet werden konnte, weil das PostgreSQL-Datenverzeichnis nicht dem richtigen Benutzer gehörte.

Ich dachte, ich würde versuchen, meine alten Container-Dateien/app.yml nach app2 zu klonen und von einem Backup wiederherzustellen. Der neue Container wurde erstellt, und ich habe die Anweisungen zum Ausführen einer Sicherung über die Befehlszeile befolgt (Restore a backup from the command line - #12). „discourse restore " schlägt mit folgender Fehlermeldung fehl:

ERROR:  could not create unique index "index_incoming_referers_on_path_and_incoming_domain_id"
DETAIL:  Key (path, incoming_domain_id)=(//viewer/, 16) is duplicated.
EXCEPTION: psql failed: DETAIL:  Key (path, incoming_domain_id)=(//viewer/, 16) 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...

Ich wäre sehr dankbar für jegliche Vorschläge, wie es weitergehen könnte.

Vielen Dank!
–dustin

Willkommen, Dustin. Es tut uns leid, dass Sie Probleme haben.

Sie haben einen beschädigten Index. Schauen Sie sich bitte PostgreSQL 12 update - #238 an.

Vielen Dank für deine Antwort. Am Ende habe ich statt eines neuen App-Instanz und der Wiederherstellung aus einem Backup zu meinem ursprünglichen App zurückgekehrt und mehrmals ‘./launcher rebuild app’ ausgeführt (als root – was ich für unnötig gehalten hätte, aber da ich meine Seite ursprünglich als root eingerichtet habe, ergibt das Sinn). Jetzt ist meine Seite wieder da! Hurra!

Erinnere mich bitte, nie wieder den freundlich aussehenden Upgrade-Button anzufassen!

Vielen Dank,
–dustin

Sie haben immer noch den beschädigten Index. Sie möchten, dass er nicht beschädigt ist.

Wow, es wäre wirklich schön, wenn der Upgrade-Prozess einige dieser Probleme beheben könnte!

Also nach der Installation des Data Explorer-Plugins und dem Stöbern im incoming_referers-Index sowie dem Löschen anderer Indizes, die in der Anfrage hier aufgelistet sind:

Erhalte ich immer noch:

discourse=# REINDEX SCHEMA CONCURRENTLY public;
WARNING:  cannot reindex invalid index "pg_toast.pg_toast_19337_index_ccnew" concurrently, skipping
WARNING:  cannot reindex invalid index "pg_toast.pg_toast_19337_index_ccnew1" concurrently, skipping

Und diese lassen sich nicht löschen!

# drop index pg_toast_19337_index_ccnew1;
ERROR:  index "pg_toast_19337_index_ccnew1" does not exist

Ah, das pg_toast-Präfix wird benötigt:

discourse=# drop index pg_toast.pg_toast_19337_index_ccnew1;
DROP INDEX
discourse=# drop index pg_toast.pg_toast_19337_index_ccnew;
DROP INDEX
discourse=# REINDEX SCHEMA CONCURRENTLY public;
REINDEX

Ja, die beschädigten Indizes sind etwas, das wir genau untersuchen. Entschuldigen Sie die Schwierigkeiten. Theoretisch sollte das nicht möglich sein, aber Sie wissen, was sie über Theorie versus Praxis sagen. Ich hoffe, dass PG12 widerstandsfähiger sein wird gegen … was auch immer das ist.

Das ist gut zu hören. Das ist im Grunde der erste Stolperstein, den ich nach Jahren des „Einrichten und Vergessen