Ich habe versucht, Updates auszuführen und neu zu erstellen, aber ich bin auf diesen schönen Fehler gestoßen:
I, [2023-01-18T08:05:48.701709 #1] INFO -- : cd /var/www/discourse & su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2023-01-18T08:05:52.431210 #1] INFO -- :
I, [2023-01-18T08:05:52.431807 #1] INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
2023-01-18 08:05:59.081 UTC [1166] discourse@discourse ERROR: could not create unique index "index_tags_on_name_ccnew_ccnew_ccnew5"
2023-01-18 08:05:59.081 UTC [1166] discourse@discourse DETAIL: Key (name)=(vuejs) is duplicated.
2023-01-18 08:05:59.081 UTC [1166] discourse@discourse STATEMENT: REINDEX INDEX CONCURRENTLY index_tags_on_name_ccnew_ccnew
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
PG::UniqueViolation: ERROR: could not create unique index "index_tags_on_name_ccnew_ccnew_ccnew5"
DETAIL: Key (name)=(vuejs) is duplicated.
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rack-mini-profiler-3.0.0/lib/patches/db/pg.rb:110:in `async_exec'
Es gibt andere Themen im Forum mit ähnlichen Problemen (1, 2, 3), aber wenn ich versuche, in den Container einzutreten, erhalte ich Folgendes:
/var/discourse# ./launcher enter app
x86_64 arch detected.
Error: No such container: app
Daher kann ich Indizes nicht manuell löschen.
Gibt es andere Vorschläge, welchen Ansatz ich als Nächstes verfolgen sollte?
Vielen Dank für die Fehlerberichterstattung. Ich werde mir das ansehen, aber ich glaube, es gibt ein Problem mit einem Index in Ihrer Datenbank und eine kürzliche Migration versucht, dies zu beheben, aber einige Probleme können nicht ohne menschliches Eingreifen behoben werden.
Ich glaube, der Commit, der die fehlgeschlagene Migration eingeführt hat, ist dieser:
Sie können versuchen, Ihre Discourse-Instanz auf die vorherige Version zu fixieren, die dem Commit 690e2f15ab9549486aaa6750e1093c1336bf17f2 entspricht. Bearbeiten Sie Ihre app.yml-Datei und setzen Sie den version-Schlüssel unter params. Stellen Sie sicher, dass Sie diesen Schlüssel auch auskommentieren!
Dann sollte alles starten und Sie sollten den doppelten vuejs-Tag entfernen können, aber das könnte einige unerwünschte Auswirkungen haben, wenn der doppelte Tag in Gebrauch ist. Wir werden versuchen, eine bessere Lösung zu finden, aber das sollte bis dahin funktionieren.
Wir haben das schon früher gesehen, es ist ein Albtraumproblem, aber wir haben es auf Upgrade-Probleme eingegrenzt.
Die Indexstruktur in PG hängt vom Installationszeitpunkt ab, und Upgrades können manchmal zu einem Albtraum führen.
Wenn der Reindex nicht früh genug durchgeführt wird, kann es zu Problemen kommen. Einige unserer früheren PG-Docker-Upgrades haben dies nicht durchgeführt… und einige alte Installationen haben leider eine kleine Zeitbombe.
Dies ist heutzutage im Ökosystem größtenteils gelöst, aber einige Probleme bleiben bestehen.
Vielleicht hilft das bei der weiteren Identifizierung der Ursache, hier sind also einige weitere Details zum System:
Die Installation ist tatsächlich uralt, seit 2014, aber das System wird mindestens einmal im Monat aktualisiert (obwohl normalerweise alle zwei Wochen). Daher wurde nie eine Hauptversion übersprungen.
Es gibt keine Versionssperre, sodass wir im Grunde auf der neuesten Version im main-Branch laufen (YOLO!).
Obwohl wir vor einiger Zeit ein paar wenige inoffizielle ausprobiert haben, sind alle installierten Plugins offiziell und das schon seit… 5 Jahren oder länger.
Habe das gleiche Problem, ich bin dir bis zu diesem Satz gefolgt.
Wie entfernst du die Duplikate tatsächlich? Einfach eine delete SQL-Anweisung im Data Explorer ausführen? Was ist mit den Fremdtabelleneinträgen, die auf dieses Tag verweisen?
Update 1
OK, ich sehe, dass du keine update-Anweisungen ausführen kannst.
Ich habe jetzt die GUI benutzt und das Tag einfach umbenannt.