Erreur lors de la reconstruction avec bookmarks_polymorphic

Salut,

J’ai une erreur lors de la reconstruction :

ÉCHEC

Pups::ExecError : cd /var/www/discourse & su discourse -c ‘bundle exec rake db:migrate’ a échoué avec le retour #<Process::Status: pid 1121 exit 1>
Emplacement de l’échec : /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’
exec a échoué avec les paramètres {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}
bootstrap a échoué avec le code de sortie 1

Et en remontant :

PG::DependentObjectsStillExist : ERREUR : impossible de supprimer la colonne post_id de la table bookmarks car d’autres objets en dépendent
DÉTAIL : le déclencheur bookmarks_polymorphic_data_sync sur la table bookmarks dépend de la colonne post_id de la table bookmarks
INDICE : Utilisez DROP … CASCADE pour supprimer également les objets dépendants.

Comment résoudre ce bug ?

vous voudrez peut-être ajouter quelle branche vous ciblez, s’il s’agit de stable ou de tests-passed ?

Salut,

c’est la branche tests-passed normalement…
J’ai résolu le problème en supprimant le déclencheur manuellement. Mais je ne sais pas si cela posera un problème plus tard.

Bien. Vous pouvez toujours entrer dans le conteneur et exécuter les migrations sélectivement si cela devient un problème.

Malheureusement, lors d’une nouvelle installation de 3.0.0.beta16, il n’y a pas de tel déclencheur dans psql que je pourrais supprimer.
Pourtant, la restauration de la sauvegarde que j’ai faite à partir d’une 2.9.0.beta12 échoue avec la même erreur.

ERREUR : impossible de supprimer la colonne post_id de la table bookmarks car d’autres objets en dépendent
DÉTAIL : le déclencheur bookmarks_polymorphic_data_sync sur la table bookmarks dépend de la colonne post_id de la table bookmarks

EDIT :
Je comprends maintenant - j’ai supprimé le déclencheur à l’origine - la mise à jour et la restauration des sauvegardes ont recommencé à fonctionner - merci pour l’indice.

@DeviceNull

Comment avez-vous réussi à supprimer le déclencheur ?

Je rencontre un problème similaire lors de la mise à niveau de Discourse.

Causé par :
PG::DependentObjectsStillExist : ERREUR : impossible de supprimer la colonne post_id de la table bookmarks car d'autres objets en dépendent
DÉTAIL : le déclencheur bookmarks_polymorphic_data_sync sur la table bookmarks dépend de la colonne post_id de la table bookmarks
INDICE : utilisez DROP ... CASCADE pour supprimer également les objets dépendants.

Quelqu’un rencontre-t-il un problème similaire, lorsque la mise à niveau échoue lors de la migration de la base de données ?

J’ai fait ce qui suit, la mise à niveau a réussi !

Démarrez le conteneur, car il s’est arrêté pendant la mise à niveau

./launcher start app
./launcher enter app

Accédez à l’invite de commande psql

sudo -u postgres psql discourse

voir les déclencheurs

SELECT tgname FROM pg_trigger;

Supprimer le déclencheur

DROP TRIGGER IF EXISTS bookmarks_polymorphic_data_sync ON bookmarks CASCADE;

Reconstruire maintenant

./launcher rebuild app

  1. Via votre terminal (j’imagine bash) démarrez la console mysql à l’intérieur du conteneur :
    docker exec -i name_of_your_container mysql

Dans la console mysql :
use discourse;
DROP TRIGGER bookmarks.bookmarks_polymorphic_data;

Quittez la console avec
exit

Après cela, le script de mise à jour devrait pouvoir supprimer la colonne et les choses devraient se dérouler sans problème - je croise les doigts.