DuplicateColumn e multisite: migrate fallito

L’aggiornamento da 2.9.0.beta2 a 2.9.0.beta4 è fallito con il messaggio di errore PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists. Il consiglio in Recovering from failed/partially applied upgrade mi ha aiutato a tornare online. Sto aprendo un nuovo argomento perché questo problema sembra essere specificamente relativo a un’installazione multisito (dockerizzata).

Il problema sembra essere che multisite:migrate sta cercando di eseguire nuovamente la stessa migrazione che era già stata eseguita come parte delle migrazioni precedenti. Il risultato è stato PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists. Sulla base del messaggio di errore, questo potrebbe essere correlato alla funzionalità dei segnalibri polimorfici, DEV: Re-add polymorphic bookmark columns by martin-brennan · Pull Request #16261 · discourse/discourse · GitHub (ping @martin?).

Dopo aver riscontrato il problema, la mia soluzione rapida e sporca è stata:

  1. Commentare la riga - exec: cd /var/www/discourse \u0026\u0026 sudo -E -u discourse bundle exec rake multisite:migrate nel file di configurazione containers/web_only.yml.
  2. Eliminare manualmente le migrazioni (parzialmente applicate?) relative ai segnalibri: ./launcher enter data e utilizzare psql per accedere a entrambi i miei database Discourse ed eseguire ALTER TABLE bookmarks DROP COLUMN bookmarkable_id, DROP COLUMN bookmarkable_type;
  3. Rieseguire la ricostruzione: ./launcher rebuild web_only 2\u003e\u00261

Cosa potrei star perdendo ora che multisite:migrate non è stato eseguito? Apprezzerei qualsiasi pensiero. Entrambi i siti sembrano funzionare, comunque. :crossed_fingers:

1 Mi Piace

Allora penso che quello che farei sarebbe eseguire un altro aggiornamento e fare se sei fuori dai guai.

Hai qualche idea sul perché lo faresti? O suggerimenti su cosa aspettarsi dall’esecuzione della migrazione multisito? Vedi, ho un’avversione a eseguire script che non capisco. :slightly_smiling_face:

Perché almeno sai più o meno come risolverlo e avrai dimenticato completamente quando aggiornerai la prossima volta (se sei come me). Sono abbastanza sicuro che funzionerà, dato che penso che sia quello che altri hanno visto quando hanno risolto questo problema.

1 Mi Piace

Ha senso, sembra che tu non abbia mai eseguito il post-migrate per rimuovere le colonne che erano originariamente presenti, che ho rimosso in DEV: Re-add polymorphic bookmark columns by martin-brennan · Pull Request #16261 · discourse/discourse · GitHub. Potrei solo dover controllare la presenza delle colonne prima di riaggiungerle qui discourse/db/migrate/20220322024216_add_bookmark_polymorphic_columns.rb at 037172beaae0743176eee653bd2cd4cd1ce5c7e9 · discourse/discourse · GitHub , farò un commit per questo.

Ho appena unito un commit che dovrebbe aiutare:

4 Mi Piace