Errore durante la ricompilazione con bookmarks_polymorphic

Ciao,

ho un errore durante la Rebuild:

FAILED

Pups::ExecError: cd /var/www/discourse & su discourse -c ‘bundle exec rake db:migrate’ fallito con ritorno #<Process::Status: pid 1121 exit 1>
Posizione del fallimento: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’
exec fallito con i parametri {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}
bootstrap fallito con codice di uscita 1

E scorrendo verso l’alto:

PG::DependentObjectsStillExist: ERRORE: impossibile eliminare la colonna post_id dalla tabella bookmarks perché altri oggetti dipendono da essa
DETTAGLIO: il trigger bookmarks_polymorphic_data_sync sulla tabella bookmarks dipende dalla colonna post_id della tabella bookmarks
SUGGERIMENTO: Utilizzare DROP … CASCADE per eliminare anche gli oggetti dipendenti.

Come posso risolvere questo bug?

potresti voler aggiungere quale branch stai prendendo di mira, se si tratta di stable o tests-passed?

1 Mi Piace

Ciao,

è normalmente il branch tests-passed…
Ho risolto il problema eliminando manualmente il trigger. Ma non so se questo causerà problemi in seguito.

1 Mi Piace

Bello. Puoi sempre entrare nel container ed eseguire le migrazioni selettivamente se diventa un problema.

Purtroppo, su un’installazione pulita di 3.0.0.beta16 non c’è alcun trigger in psql che potrei eliminare.
Tuttavia, il ripristino del backup che ho effettuato da una 2.9.0.beta12 fallisce con lo stesso errore.

ERROR: cannot drop column post_id of table bookmarks because other objects depend on it
DETAIL: trigger bookmarks_polymorphic_data_sync on table bookmarks depends on column post_id of table bookmarks

EDIT:
Capito ora - ho eliminato il trigger nell’origine - l’aggiornamento e il ripristino dei backup hanno ricominciato a funzionare - grazie per il suggerimento

@DeviceNull

Come sei riuscito a eliminare il trigger?

Sto riscontrando un problema simile durante l’aggiornamento di Discourse.

Causato da:
PG::DependentObjectsStillExist: ERRORE:  impossibile eliminare la colonna post_id della tabella bookmarks perché altri oggetti dipendono da essa
DETTAGLIO:  il trigger bookmarks_polymorphic_data_sync sulla tabella bookmarks dipende dalla colonna post_id della tabella bookmarks
SUGGERIMENTO:  Utilizzare DROP ... CASCADE per eliminare anche gli oggetti dipendenti.

Qualcuno sta riscontrando un problema simile, quando l’aggiornamento fallisce durante la migrazione del database
Ho fatto quanto segue, l’aggiornamento è riuscito!

Avvia il container, poiché è stato arrestato durante l’aggiornamento

./launcher start app
./launcher enter app

Accedi al prompt dei comandi di psql

sudo -u postgres psql discourse

visualizza i trigger

SELECT tgname FROM pg_trigger;

Elimina il trigger

DROP TRIGGER IF EXISTS bookmarks_polymorphic_data_sync ON bookmarks CASCADE;

Ricostruisci ora

./launcher rebuild app

1 Mi Piace
  1. Tramite il tuo terminale (presumo bash) avvia la console mysql all’interno del container:
    docker exec -i nome_del_tuo_container mysql

Nella console mysql:
use discourse;
DROP TRIGGER bookmarks.bookmarks_polymorphic_data;

Esci dalla console con
exit

Dopodiché lo script di aggiornamento dovrebbe essere in grado di eliminare la colonna e le cose dovrebbero procedere senza intoppi - speriamo.