Wiederherstellung fehlgeschlagen aufgrund des Schlüssels (plugin_name, key)=(discourse-data-explorer, q:-1) ist dupliziert

Beim Upgrade meines Discourse habe ich festgestellt, dass es nicht mehr funktioniert. Ich kann die Kategorien-Seite sehen, aber nicht die Hauptseite oder die Seite „Neueste", wie zum Beispiel die Seite „Neueste":

Ich habe bereits alle Plugins gelöscht, sowohl offizielle als auch inoffizielle. Das Problem besteht jedoch weiterhin.

Daher habe ich versucht, ein Backup wiederherzustellen, aber folgende Meldung erhalten:

[2020-07-12 01:16:20] ERROR:  could not create unique index "index_plugin_store_rows_on_plugin_name_and_key"
[2020-07-12 01:16:20] DETAIL:  Key (plugin_name, key)=(discourse-data-explorer, q:-1) is duplicated.
[2020-07-12 01:16:20] EXCEPTION: psql failed: DETAIL:  Key (plugin_name, key)=(discourse-data-explorer, q:-1) is duplicated.

[2020-07-12 01:16:20] /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'
/var/www/discourse/lib/backup_restore.rb:188:in `block in start!'
1 „Gefällt mir“

Im Plugin-Store sind beschädigte Daten vorhanden.

Wenn Ihnen keine der benutzerdefinierten Daten, die Sie im Data Explorer gespeichert haben, wichtig sind, versuchen Sie Folgendes:

./launcher enter app
rails c
PluginStore.where(plugin_name: 'discourse-data-explorer').delete_all
4 „Gefällt mir“
root@HFT-app:/var/www/discourse# rails c
[1] pry(main)> PluginStore.where(plugin_name: 'discourse-data-explorer').delete_all
NoMethodError: undefined method `where' for PluginStore:Class
Did you mean?  when
from (pry):1:in `__pry__'
[2] pry(main)>


Es scheint, als läge ein Fehler vor.

Können Sie mir weitere Informationen geben?

Es sollte PluginStoreRow und nicht PluginStore sein. Probieren Sie Folgendes:

./launcher enter app
rails c
PluginStoreRow.where(plugin_name: 'discourse-data-explorer').delete_all

:warning: Dies wird alle Data-Explorer-Daten von Ihrer Website unwiderruflich löschen.

4 „Gefällt mir“

Was soll ich dann tun?
Das Forum ist jetzt nicht mehr lesbar, anscheinend wurde latest.json verloren.

Ich würde versuchen, die App neu zu erstellen. Wenn das nicht funktioniert, prüfe /logs auf Fehler.

1 „Gefällt mir“

Wie kann ich die Protokolle einsehen?

Wenn Sie die Protokolle des Neuaufbauvorgangs meinen, finden Sie hier die Fehlermeldung beim Neuaufbau (alle roten Wörter sind hier).


2020/07/14 11:33:39 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory


#------




2020-07-14 11:33:42.023 UTC [49] LOG:  database system is ready to accept connections
I, [2020-07-14T11:33:46.972466 #1]  INFO -- :
I, [2020-07-14T11:33:46.972792 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2020-07-14 11:33:47.025 UTC [62] postgres@postgres ERROR:  database "discourse" already exists
2020-07-14 11:33:47.025 UTC [62] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR:  database "discourse" already exists
I, [2020-07-14T11:33:47.026573 #1]  INFO -- :
I, [2020-07-14T11:33:47.026936 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2020-07-14 11:33:47.083 UTC [73] postgres@discourse ERROR:  role "discourse" already exists
2020-07-14 11:33:47.083 UTC [73] postgres@discourse STATEMENT:  create user discourse;
ERROR:  role "discourse" already exists


Hallo, wie führe ich den Code bitte aus?

@xiasummer

Nur wenn (IFF) Sie ein BESTÄTIGTES vollständiges Backup Ihrer aktuellen Datenbank und Ihres Uploads-Ordners haben, können Sie dieses (diese) Backups aus dem gemeinsamen Verzeichnis verschieben oder kopieren, zum Beispiel (passen Sie dies jedoch an Ihre Konfiguration an):

mv  /var/discourse/shared  /tmp

Stellen Sie natürlich sicher, dass Sie zuerst vollständige Backups der Datenbank haben.

Anschließend können Sie von Grund auf neu aufbauen:

./launcher rebuild app

und dann von der Befehlszeile aus wiederherstellen:

cp -rf /tmp/shared/backups/default /var/discourse/shared/standalone/backups

Anschließend können Sie auf die übliche Weise von der Befehlszeile aus eine Wiederherstellung mit Ihrem neuesten Backup durchführen.

Dadurch wird Ihr Anwendungsbackup auf den Zustand zum Zeitpunkt Ihres letzten GUTEN und VOLLSTÄNDIGEN Backups wiederhergestellt.

Dies wird nur empfohlen, WENN Sie ein vollständiges, aktuelles Backup Ihrer gesamten Datenbank und Ihrer Upload-Dateien haben.

Falls Sie ein Backup ohne die Uploads durchgeführt haben, können Sie diese natürlich in /tmp/shared/standalone/uploads finden und wie folgt kopieren:

cp -rf /tmp/shared/standalone/uploads/* /var/discourse/shared/standalone/uploads

Danach, sobald alles wieder funktioniert und Sie zuversichtlich sind, dass die Wiederherstellung wie gewünscht verlaufen ist, können Sie natürlich Ihr Staging-Verzeichnis löschen:

rm -rf /tmp/shared

Dies ist eine Möglichkeit, vorzugehen.

Es gibt möglicherweise andere Wege, aber so würde ich vorgehen, wenn ich ein aktuelles, gutes vollständiges Backup hätte.

2 „Gefällt mir“

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