Error on rebuild with bookmarks_polymorphic

Hi,

i’ve an error on Rebuild :

FAILED

Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake db:migrate’ failed with return #<Process::Status: pid 1121 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn’
exec failed with the params {“cd”=>“$home”, “hook”=>“db_migrate”, “cmd”=>[“su discourse -c ‘bundle exec rake db:migrate’”]}
bootstrap failed with exit code 1

And with scroll up :

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

How to resolve this bug?

you might want to add which branch you are targeting, whether this is stable or tests-passed?

1 Like

Hi,

it’s tests-passed branch normally…
I solved the problem by deleting the trigger manually. But I don’t know if that will be a problem later.

1 Like

Nice. You can always enter the container and run migrations selectively if it becomes a problem.

Unfortunately on a fresh install of 3.0.0.beta16 there is no such trigger in psql that I could drop.
Yet restoring the Backup I made from a 2.9.0.beta12 fails with the same Error.

ERROR: cannot drop column post_id of table bookmarks because other objects depend on it
DETAIL: trigger bookmarks_polymorphic_data_sync on table bookmarks depends on column post_id of table bookmarks

EDIT:
Get it now - deleted trigger in the origin - updateing and restoring backups started working again - thanks for the hint

@DeviceNull

How did you able to delete trigger?

Getting similar issue while upgrading discourse

Caused by:
PG::DependentObjectsStillExist: ERROR:  cannot drop column post_id of table bookmarks because other objects depend on it
DETAIL:  trigger bookmarks_polymorphic_data_sync on table bookmarks depends on column post_id of table bookmarks
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

Any one going through similar issue, when upgrade failing at db migrate

Did below, upgrade was success!

Start the container, since it’s stopped during upgrade

./launcher start app
./launcher enter app

Enter into psql command prompt

sudo -u postgres psql discourse

see the triggers

SELECT tgname FROM pg_trigger;

Drop the trigger

DROP TRIGGER IF EXISTS bookmarks_polymorphic_data_sync ON bookmarks CASCADE;

Rebuild now

./launcher rebuild app

1 Like
  1. Via your terminal (i assume bash) start mysql console inside the container:
    docker exec -i name_of_your_container mysql

In the mysql console:
use discourse;
DROP TRIGGER bookmarks.bookmarks_polymorphic_data;

Leave console with
exit

After that the update script can should be able to drop the column and things should run smoothly - fingers crossed.