Tentei atualizar minha instância do Discourse, no entanto, devido a alguns problemas, parece que falhou em um estado parcialmente aplicado. Ao executar ./launcher rebuild app, recebo a seguinte mensagem de erro, que indica uma migração que já foi (parcialmente) aplicada:
I, [2022-03-24T21:13:16.043071 #1] INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
Qualquer orientação sobre se há uma maneira de recuperar isso (ou se preciso aceitar e fazer uma nova instalação) seria apreciada. Obrigado!
Tive um problema semelhante, mas parece improvável que minha solução ajude você.
Você não tem SKIP_POST_DEPLOYMENT_MIGRATIONS definido em seu app.yml, tem? Se sim, você precisa migrar o banco de dados com ele definido como zero e, em seguida, reconstruir, mas não acho que esse seja o seu problema.
Era o que eu pensava. Então pode haver um problema real que tem a ver com a capacidade de migrar de um ponto específico para o atual. Mas isso não deveria acontecer.
Esvaziei todas as tabelas que estavam me dando erros (uma por uma, no final foram 7), até que pude reconstruir o aplicativo sem nenhum erro.
No seu caso, parece que o problema é uma coluna:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
Talvez você devesse procurar a qual tabela ela pertence, para poder esvaziá-la, ou você pode simplesmente remover essa coluna.
Acredito que o problema seja que, ao migrar parcialmente, essas tabelas já são criadas, daí não poder criá-las novamente e retornar um erro. Talvez uma condicional possa ser adicionada a este processo, para que não dê erros? (Não sou um especialista) @pfaffman
Acho que você quer remover a coluna bookmarkable_id da tabela bookmarks. Então, depois de entrar no contêiner e no postgres assim:
cd /var/discourse
./launcher enter app
su - postgres
psql
Então você faria
ALTER TABLE bookmarks
DROP COLUMN bookmarkable_id
DROP COLUMN bookmarkable_type;
Mas fazer um backup apenas do banco de dados não seria uma má ideia se o fórum estiver em execução. Se não estiver, você pode fazer um backup com discourse backup após a linha enter app acima.
Seria possível me dar um resumo dos comandos para fazer isso, por favor?
Eu consigo atualizar e tudo mais facilmente, mas esta é a primeira vez que algo dá errado e, para ser honesto, estou totalmente fora da minha zona de conforto, haha.
Você poderia executar ./launcher start app e verificar a versão instalada em https://seu.dominio/admin para que eu possa tentar refazer seus passos. Algum plugin?
Esta parece ser uma solução provável. Você deve ser capaz de atualizar para esta e talvez então conseguir chegar à versão atual? Algo assim faz sentido para mim.