DuplicateColumn e multisite:migrate falharam

Atualizar de 2.9.0.beta2 para 2.9.0.beta4 falhou com a mensagem de erro PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists. O conselho em Recovering from failed/partially applied upgrade me ajudou a voltar a funcionar novamente. Estou iniciando um novo tópico porque este problema parece ser especificamente sobre uma instalação multissite (dockerizada).

O problema parece ser que multisite:migrate está tentando executar novamente a mesma migração que já foi executada como parte das migrações anteriores. O resultado foi PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists. Com base na mensagem de erro, isso pode estar relacionado ao recurso de marcadores polimórficos, DEV: Re-add polymorphic bookmark columns by martin-brennan · Pull Request #16261 · discourse/discourse · GitHub (ping @martin?).

Depois de encontrar o problema, minha solução rápida e suja foi:

  1. Comentar a linha - exec: cd /var/www/discourse \u0026\u0026 sudo -E -u discourse bundle exec rake multisite:migrate no arquivo de configuração containers/web_only.yml.
  2. Remover manualmente as migrações (parcialmente aplicadas?) relacionadas aos marcadores: ./launcher enter data e usar psql para fazer login em ambos os meus bancos de dados Discourse e executar ALTER TABLE bookmarks DROP COLUMN bookmarkable_id, DROP COLUMN bookmarkable_type;
  3. Reexecutar a reconstrução: ./launcher rebuild web_only 2\u003e\u00261

O que posso estar perdendo agora que o multisite:migrate não foi executado? Agradeceria qualquer opinião. Ambos os sites parecem funcionar, no entanto. :crossed_fingers:

1 curtida

Então, acho que o que eu faria seria executar outro upgrade e ver se você está fora de perigo.

Alguma ideia do porquê você faria isso? Ou dicas sobre o que esperar da execução da migração multisite? Veja bem, tenho aversão a executar scripts que não entendo. :slightly_smiling_face:

Porque você pelo menos sabe mais ou menos como consertar e terá esquecido completamente quando atualizar da próxima vez (se você for como eu). Tenho quase certeza de que funcionará, pois acho que é isso que outros viram quando corrigiram esse problema.

1 curtida

Faz sentido, parece que você nunca executou o pós-migração para remover as colunas que estavam originalmente lá, que eu removi em DEV: Re-add polymorphic bookmark columns by martin-brennan · Pull Request #16261 · discourse/discourse · GitHub. Talvez eu precise apenas verificar as colunas antes de adicioná-las novamente aqui discourse/db/migrate/20220322024216_add_bookmark_polymorphic_columns.rb at 037172beaae0743176eee653bd2cd4cd1ce5c7e9 · discourse/discourse · GitHub, farei um commit para isso.

Acabei de mesclar um commit que deve ajudar:

4 curtidas