DuplicateColumn und Multisite: Migration fehlgeschlagen

Das Upgrade von 2.9.0.beta2 auf 2.9.0.beta4 schlug mit der Fehlermeldung PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists fehl. Der Rat unter Recovering from failed/partially applied upgrade half mir, wieder online zu gehen. Ich eröffne ein neues Thema, da dieses Problem speziell eine (dockerisierte) Multisite-Installation zu betreffen scheint.

Das Problem scheint darin zu bestehen, dass multisite:migrate versucht, dieselbe Migration erneut auszuführen, die bereits als Teil der früheren Migrationen ausgeführt wurde. Das Ergebnis war PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists. Basierend auf der Fehlermeldung könnte dies mit der polymorphen Lesezeichenfunktion zusammenhängen, DEV: Re-add polymorphic bookmark columns by martin-brennan · Pull Request #16261 · discourse/discourse · GitHub (Ping @martin?).

Nachdem ich auf das Problem gestoßen war, war meine schnelle und schmutzige Lösung:

  1. Auskommentieren der Zeile - exec: cd /var/www/discourse \u0026\u0026 sudo -E -u discourse bundle exec rake multisite:migrate in der Konfigurationsdatei containers/web_only.yml.
  2. Manuelles Löschen der (teilweise angewendeten?) Migrationen im Zusammenhang mit Lesezeichen: ./launcher enter data und Verwendung von psql, um mich in beide meiner Discourse-Datenbanken einzuloggen und ALTER TABLE bookmarks DROP COLUMN bookmarkable_id, DROP COLUMN bookmarkable_type; auszuführen.
  3. Erneutes Ausführen des Rebuilds: ./launcher rebuild web_only 2\u003e\u00261

Was könnte ich jetzt übersehen, da multisite:migrate nicht ausgeführt wurde? Ich würde mich über Gedanken freuen. Beide Seiten scheinen jedoch zu funktionieren. :crossed_fingers:

1 „Gefällt mir“

Dann denke ich, was ich tun würde, ist, ein weiteres Upgrade durchzuführen und zu sehen, ob Sie aus dem Schneider sind.

Haben Sie irgendwelche Gedanken dazu, warum Sie das tun würden? Oder Hinweise darauf, was Sie von der Ausführung der Multisite-Migration erwarten können? Sehen Sie, ich habe eine Abneigung dagegen, Skripte auszuführen, die ich nicht verstehe. :slightly_smiling_face:

Weil du zumindest ungefähr weißt, wie du es reparieren kannst, und du es komplett vergessen haben wirst, wenn du das nächste Mal ein Upgrade durchführst (wenn du auch nur annähernd wie ich bist). Ich bin ziemlich sicher, dass es funktionieren wird, da ich glaube, dass dies das ist, was andere gesehen haben, als sie dieses Problem behoben haben.

1 „Gefällt mir“

Das ergibt Sinn, es scheint, als hätten Sie nie den Post-Migrate-Befehl ausgeführt, um die ursprünglich vorhandenen Spalten zu entfernen, die ich in DEV: Re-add polymorphic bookmark columns by martin-brennan · Pull Request #16261 · discourse/discourse · GitHub entfernt habe. Ich muss möglicherweise nur die Spalten prüfen, bevor ich sie hier wieder hinzufüge: discourse/db/migrate/20220322024216_add_bookmark_polymorphic_columns.rb at 037172beaae0743176eee653bd2cd4cd1ce5c7e9 · discourse/discourse · GitHub. Ich werde dafür einen Commit erstellen.

Gerade einen Commit zusammengeführt, der helfen sollte:

4 „Gefällt mir“