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 ?

1 « J'aime »

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.

1 « J'aime »

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 « J'aime »
  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.