Migration error upgrading to 14.3: ERROR: cannot drop constraint ci_builds_pkey on table ci_builds because other objects depend on it.
Summary
Multiple customers have reported a database migration error upgrading to Gitlab 14.3
PG::DependentObjectsStillExist: ERROR: cannot drop constraint ci_builds_pkey on
table ci_builds because other objects depend on it.
DETAIL: constraint fk_3f0c88d7dc on table ci_sources_pipelines depends on index ci_builds_pkey
GitLab team members can read more in the tickets:
Workaround
- Start database console with
sudo gitlab-psql
, and run:alter table ci_sources_pipelines drop constraint fk_3f0c88d7dc;
-
Run migrations
sudo gitlab-rake db:migrate
(or upgrade GitLab)
Steps to reproduce
Example Project
What is the current bug behavior?
FK was introduced by 163983e0 but isn't in db/structure.sql
now.
What is the expected correct behavior?
Relevant logs and/or screenshots
-- change_column_default("ci_builds", :id, #<Proc:0x00007f4d9484fa60 /opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:140 (lambda)>)
-> 0.0341s
-- change_column_default("ci_builds", :id_convert_to_bigint, 0)
-> 0.0045s
-- execute("ALTER TABLE \"ci_builds\" DROP CONSTRAINT ci_builds_pkey")
STDERR:
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
PG::DependentObjectsStillExist: ERROR: cannot drop constraint ci_builds_pkey on table ci_builds because other objects depend on it
DETAIL: constraint fk_3f0c88d7dc on table ci_sources_pipelines depends on index ci_builds_pkey
constraint fk_be5624bf37 on table ci_sources_pipelines depends on index ci_builds_pkey
HINT: Use DROP ... CASCADE to drop the dependent objects too.
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:145:in `block in swap_columns'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:123:in `run_block'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:134:in `block in run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:97:in `run'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:422:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:117:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:124:in `swap_columns'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:106:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:31:in `ddl_transaction'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'
Caused by:
ActiveRecord::StatementInvalid: PG::DependentObjectsStillExist: ERROR: cannot drop constraint ci_builds_pkey on table ci_builds because other objects depend on it
DETAIL: constraint fk_3f0c88d7dc on table ci_sources_pipelines depends on index ci_builds_pkey
constraint fk_be5624bf37 on table ci_sources_pipelines depends on index ci_builds_pkey
HINT: Use DROP ... CASCADE to drop the dependent objects too.
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:145:in `block in swap_columns'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:123:in `run_block'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:134:in `block in run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:97:in `run'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:422:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:117:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:124:in `swap_columns'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:106:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:31:in `ddl_transaction'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'
Caused by:
PG::DependentObjectsStillExist: ERROR: cannot drop constraint ci_builds_pkey on table ci_builds because other objects depend on it
DETAIL: constraint fk_3f0c88d7dc on table ci_sources_pipelines depends on index ci_builds_pkey
constraint fk_be5624bf37 on table ci_sources_pipelines depends on index ci_builds_pkey
HINT: Use DROP ... CASCADE to drop the dependent objects too.
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:145:in `block in swap_columns'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:123:in `run_block'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:134:in `block in run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:97:in `run'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers.rb:422:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:117:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:124:in `swap_columns'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20210907211557_finalize_ci_builds_bigint_conversion.rb:106:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:31:in `ddl_transaction'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Output of checks
Possible fixes
Edited by Ben Prescott_