Erro na reconstrução com bookmarks_polymorphic

Olá,

Tenho um erro na Reconstrução:

FALHA

Pups::ExecError: cd /var/www/discourse & su discourse -c ‘bundle exec rake db:migrate’ falhou com retorno #<Process::Status: pid 1121 exit 1>
Localização da falha: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’
exec falhou com os parâmetros {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}
bootstrap falhou com código de saída 1

E com a rolagem para cima:

PG::DependentObjectsStillExist: ERRO: cannot drop column post_id of table bookmarks because other objects depend on it
DETALHE: trigger bookmarks_polymorphic_data_sync on table bookmarks depends on column post_id of table bookmarks
DICA: Use DROP … CASCADE to drop the dependent objects too.

Como resolver este bug?

talvez você queira adicionar qual branch você está direcionando, se é stable ou tests-passed?

1 curtida

Oi,

é o branch tests-passed normalmente…
Resolvi o problema excluindo o gatilho manualmente. Mas não sei se isso será um problema mais tarde.

1 curtida

Legal. Você sempre pode entrar no contêiner e executar migrações seletivamente se isso se tornar um problema.

Infelizmente, em uma instalação limpa do 3.0.0.beta16, não há tal trigger no psql que eu pudesse remover.
No entanto, restaurar o backup que fiz de um 2.9.0.beta12 falha com o mesmo erro.

ERRO: não é possível remover a coluna post_id da tabela bookmarks porque outros objetos dependem dela
DETALHE: o trigger bookmarks_polymorphic_data_sync na tabela bookmarks depende da coluna post_id da tabela bookmarks

EDIT:
Entendi agora - removi o trigger na origem - atualizar e restaurar backups começou a funcionar novamente - obrigado pela dica

@DeviceNull
Como você conseguiu excluir o gatilho?

Estou tendo um problema semelhante ao atualizar o Discourse

Causado por:
PG::DependentObjectsStillExist: ERRO:  não é possível descartar a coluna post_id da tabela bookmarks porque outros objetos dependem dela
DETALHE:  o gatilho bookmarks_polymorphic_data_sync na tabela bookmarks depende da coluna post_id da tabela bookmarks
DICA: Use DROP ... CASCADE para descartar os objetos dependentes também.

Alguém passando por um problema semelhante, quando o upgrade falha na migração do banco de dados?

Fiz o seguinte, o upgrade foi um sucesso!

Inicie o container, pois ele parou durante o upgrade

./launcher start app
./launcher enter app

Entre no prompt de comando do psql

sudo -u postgres psql discourse

Veja os triggers

SELECT tgname FROM pg_trigger;

Remova o trigger

DROP TRIGGER IF EXISTS bookmarks_polymorphic_data_sync ON bookmarks CASCADE;

Reconstrua agora

./launcher rebuild app

1 curtida
  1. Via seu terminal (assumo que bash) inicie o console mysql dentro do contêiner:
    docker exec -i name_of_your_container mysql

No console mysql:
use discourse;
DROP TRIGGER bookmarks.bookmarks_polymorphic_data;

Saia do console com
exit

Depois disso, o script de atualização poderá remover a coluna e as coisas devem funcionar sem problemas - cruzemos os dedos.