Ich habe versucht, meine Discourse-Instanz zu aktualisieren, aber aufgrund einiger Probleme scheint dies in einem teilweise angewendeten Zustand fehlgeschlagen zu sein. Wenn ich ./launcher rebuild app ausführe, erhalte ich die folgende Fehlermeldung, die mir eine bereits (teilweise) angewendete Migration anzeigt:
I, [2022-03-24T21:13:16.043071 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
Jeder Hinweis, ob es einen Weg gibt, dies zu beheben (oder ob ich den sauren Apfel beißen und eine Neuinstallation durchführen muss), wäre willkommen. Danke!
Ich hatte ein ähnliches Problem, aber es scheint unwahrscheinlich, dass meine Lösung Ihnen helfen wird.
Sie haben SKIP_POST_DEPLOYMENT_MIGRATIONS nicht in Ihrer app.yml gesetzt, oder? Wenn ja, müssen Sie die Datenbank mit dieser Einstellung auf Null migrieren und dann neu erstellen, aber ich glaube nicht, dass das Ihr Problem ist.
Das dachte ich auch. Es könnte also ein tatsächliches Problem geben, das mit der Migration von einem bestimmten Punkt zum aktuellen zusammenhängt. Aber das sollte nicht passieren.
Ich habe alle Tabellen, die Fehler verursachten (eine nach der anderen, am Ende waren es 7), geleert, bis ich die App ohne Fehler neu erstellen konnte.
In deinem Fall scheint das Problem eine Spalte zu sein:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
Vielleicht solltest du nachsehen, zu welcher Tabelle sie gehört, um sie leeren zu können, oder du kannst diese Spalte einfach löschen.
Ich glaube, das Problem liegt darin, dass beim teilweisen Migrieren diese Tabellen bereits erstellt sind, daher können sie nicht erneut erstellt werden und es wird ein Fehler zurückgegeben. Vielleicht könnte man diesem Prozess eine Bedingung hinzufügen, damit er keine Fehler verursacht? (Ich bin kein Experte) @pfaffman
Ich glaube, Sie möchten die Spalte bookmarkable_id aus der Tabelle bookmarks entfernen. Nachdem Sie in den Container und dann in PostgreSQL gelangt sind, wie hier gezeigt:
cd /var/discourse
./launcher enter app
su - postgres
psql
Dann würden Sie Folgendes tun:
ALTER TABLE bookmarks
DROP COLUMN bookmarkable_id
DROP COLUMN bookmarkable_type;
Aber ein reines Datenbank-Backup wäre keine schlechte Idee, wenn das Forum läuft. Wenn nicht, können Sie ein Backup mit discourse backup nach der obigen Zeile enter app durchführen.
Könntest du mir bitte die Befehle durchgehen, um das zu tun?
Ich kann Updates und so einfach durchführen, aber das ist das erste Mal, dass etwas schiefgelaufen ist und ehrlich gesagt, bin ich total außerhalb meiner Komfortzone, lol.
Könnten Sie ./launcher start app ausführen und die installierte Version unter https://your.domain/admin überprüfen, damit ich versuchen kann, Ihre Schritte nachzuvollziehen. Gibt es Plugins?
Das scheint eine wahrscheinliche Lösung zu sein. Sie sollten ein Upgrade auf diese Version durchführen können und vielleicht dann zur aktuellen Version gelangen? So etwas ergibt für mich Sinn.