Fehler beim Neuerstellen mit bookmarks_polymorphic

Hallo,

ich habe einen Fehler beim erneuten Erstellen:

FAILED

Pups::ExecError: cd /var/www/discourse & su discourse -c ‘bundle exec rake db:migrate’ fehlgeschlagen mit Rückgabe #<Process::Status: pid 1121 exit 1>
Standort des Fehlers: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’
exec fehlgeschlagen mit den Parametern {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}
bootstrap fehlgeschlagen mit Exit-Code 1

Und beim Scrollen nach oben:

PG::DependentObjectsStillExist: FEHLER: kann die Spalte post_id der Tabelle bookmarks nicht löschen, da andere Objekte von ihr abhängen
DETAIL: Trigger bookmarks_polymorphic_data_sync auf der Tabelle bookmarks hängt von der Spalte post_id der Tabelle bookmarks ab
HINT: Verwenden Sie DROP … CASCADE, um auch die abhängigen Objekte zu löschen.

Wie kann ich diesen Fehler beheben?

Sie möchten vielleicht noch hinzufügen, auf welchen Branch Sie abzielen, ob dies stable oder tests-passed ist?

1 „Gefällt mir“

Hallo,

es ist normalerweise der Branch „tests-passed“…
Ich habe das Problem gelöst, indem ich den Trigger manuell gelöscht habe. Aber ich weiß nicht, ob das später ein Problem sein wird.

1 „Gefällt mir“

Schön. Sie können den Container immer betreten und Migrationen selektiv ausführen, wenn dies zu einem Problem wird.

Leider gibt es bei einer frischen Installation von 3.0.0.beta16 keinen solchen Trigger in psql, den ich löschen könnte.
Dennoch schlägt das Wiederherstellen des Backups, das ich von einer 2.9.0.beta12 erstellt habe, mit demselben Fehler fehl.

FEHLER: Spalte post_id der Tabelle bookmarks kann nicht gelöscht werden, da andere Objekte von ihr abhängen
DETAIL: Trigger bookmarks_polymorphic_data_sync auf der Tabelle bookmarks hängt von der Spalte post_id der Tabelle bookmarks ab

EDIT:
Habe es jetzt - Trigger im Original gelöscht - das Aktualisieren und Wiederherstellen von Backups funktioniert wieder - danke für den Hinweis

@DeviceNull

Wie konntest du den Trigger löschen?

Ich habe ein ähnliches Problem beim Upgrade von Discourse.

Verursacht durch:
PG::DependentObjectsStillExist: FEHLER:  Spalte post_id der Tabelle bookmarks kann nicht gelöscht werden, da andere Objekte davon abhängen
DETAIL:  Trigger bookmarks_polymorphic_data_sync auf der Tabelle bookmarks hängt von der Spalte post_id der Tabelle bookmarks ab
HINT:  Verwenden Sie DROP ... CASCADE, um auch die abhängigen Objekte zu löschen.

Gibt es jemanden, der ein ähnliches Problem hat, wenn das Upgrade bei der DB-Migration fehlschlägt?

Habe Folgendes getan, das Upgrade war erfolgreich!

Starten Sie den Container, da er während des Upgrades gestoppt wurde

./launcher start app
./launcher enter app

Wechseln Sie zur psql-Befehlszeile

sudo -u postgres psql discourse

Sehen Sie sich die Trigger an

SELECT tgname FROM pg_trigger;

Löschen Sie den Trigger

DROP TRIGGER IF EXISTS bookmarks_polymorphic_data_sync ON bookmarks CASCADE;

Jetzt neu erstellen

./launcher rebuild app

1 „Gefällt mir“
  1. Starten Sie die MySQL-Konsole in Ihrem Container über Ihr Terminal (ich gehe davon aus, dass es sich um Bash handelt):
    docker exec -i name_des_containers_mysql

In der MySQL-Konsole:
use discourse;
DROP TRIGGER bookmarks.bookmarks_polymorphic_data;

Verlassen Sie die Konsole mit
exit

Danach sollte das Update-Skript die Spalte löschen können und die Dinge sollten reibungslos laufen – die Daumen sind gedrückt.