Error en la reconstrucción con bookmarks_polymorphic

Hola,

Tengo un error en Rebuild:

FALLIDO

Pups::ExecError: cd /var/www/discourse & su discourse -c ‘bundle exec rake db:migrate’ falló con retorno #<Process::Status: pid 1121 exit 1>
Ubicación del fallo: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’
exec falló con los parámetros {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}
bootstrap falló con el código de salida 1

Y al desplazarse hacia arriba:

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

¿Cómo resuelvo este error?

Es posible que desee agregar qué rama está apuntando, si es stable o tests-passed.

1 me gusta

Hola,

es la rama tests-passed normalmente…
Resolví el problema eliminando el disparador manualmente. Pero no sé si eso será un problema más adelante.

1 me gusta

Genial. Siempre puedes entrar en el contenedor y ejecutar migraciones de forma selectiva si se convierte en un problema.

Desafortunadamente, en una instalación nueva de 3.0.0.beta16 no hay tal disparador en psql que pudiera eliminar.
Sin embargo, restaurar la copia de seguridad que hice de una 2.9.0.beta12 falla con el mismo Error.

ERROR: no se puede eliminar la columna post_id de la tabla bookmarks porque otros objetos dependen de ella
DETAIL: el disparador bookmarks_polymorphic_data_sync en la tabla bookmarks depende de la columna post_id de la tabla bookmarks

EDITAR:
Lo entiendo ahora - eliminé el disparador en el origen - actualizar y restaurar copias de seguridad comenzó a funcionar de nuevo - gracias por la pista

@DeviceNull

¿Cómo pudiste eliminar el disparador?

Tengo un problema similar al actualizar discourse

Causado por:
PG::DependentObjectsStillExist: ERROR:  no se puede eliminar la columna post_id de la tabla bookmarks porque otros objetos dependen de ella
DETALLE:  el disparador bookmarks_polymorphic_data_sync en la tabla bookmarks depende de la columna post_id de la tabla bookmarks
PISTA:  Use DROP ... CASCADE para eliminar también los objetos dependientes.

¿Alguien está pasando por un problema similar, cuando la actualización falla en la migración de la base de datos?

Hice lo siguiente, ¡la actualización fue exitosa!

Inicia el contenedor, ya que se detuvo durante la actualización

./launcher start app
./launcher enter app

Entra en el prompt de comandos de psql

sudo -u postgres psql discourse

Ver los triggers

SELECT tgname FROM pg_trigger;

Elimina el trigger

DROP TRIGGER IF EXISTS bookmarks_polymorphic_data_sync ON bookmarks CASCADE;

Reconstruye ahora

./launcher rebuild app

1 me gusta
  1. A través de tu terminal (asumo que bash) inicia la consola de mysql dentro del contenedor:
    docker exec -i name_of_your_container mysql

En la consola de mysql:
use discourse;
DROP TRIGGER bookmarks.bookmarks_polymorphic_data;

Sal de la consola con
exit

Después de eso, el script de actualización debería poder eliminar la columna y las cosas deberían funcionar sin problemas, cruzamos los dedos.