Skip to content

Migration: PG::UndefinedTable: ERROR: relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist

Summary

main: -- execute("ALTER INDEX \"bigint_idx_9e3cffd9404ea9edfaac\" RENAME TO \"temp_234846c0eb\"")
main: == [advisory_lock_connection] object_id: 68660, pg_backend_pid: 568
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::UndefinedTable: ERROR:  relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist

Steps to reproduce

Upgrade from 18.4.2 to 18.5.1

Example Project

Gitlab in a Docker container

What is the current bug behavior?

Restart loop

What is the expected correct behavior?

Migration succeeds and gitlab starts

Relevant logs and/or screenshots

[2025-10-23T05:38:16+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: rails_migration[gitlab-rails] (gitlab::database_migrations line 51) had an error: Mixlib::ShellOut::ShellCommandFailed: bash_hide_env[migrate gitlab-rails database] (gitlab::database_migrations line 20) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of "bash"  ----
STDOUT: Skipping Topology Service health check due to the cell being disabled
Running db:migrate rake task
main: == [advisory_lock_connection] object_id: 68660, pg_backend_pid: 568
main: == 20250912003652 RetrySwapColumnsForMergeRequestDiffsBigintConversion: migrating
main: -- column_exists?("merge_request_diffs", "id_convert_to_bigint")
main:    -> 0.1089s
main: -- column_exists?("merge_request_diffs", "merge_request_id_convert_to_bigint")
main:    -> 0.0092s
main: -- columns("merge_request_diffs")
main:    -> 0.0088s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main:    -> 0.0027s
main: -- index_exists?("merge_request_diffs", [:id_convert_to_bigint], {:name=>"bigint_idx_d108ffd7b24e5e2f8ab3", :unique=>true, :algorithm=>:concurrently})
main:    -> 0.0377s
main: -- Index not created because it already exists (this may be due to an aborted migration or similar): table_name: merge_request_diffs, column_name: [:id_convert_to_bigint]
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("LOCK TABLE merge_request_diffs, merge_request_diff_commits IN SHARE ROW EXCLUSIVE MODE")
main:    -> 0.0054s
main: -- execute("ALTER TABLE merge_request_diff_commits ADD CONSTRAINT fk_rails_316aaceda3_tmp FOREIGN KEY (merge_request_diff_id) REFERENCES merge_request_diffs (id_convert_to_bigint) ON DELETE CASCADE NOT VALID;")
main:    -> 0.0146s
main: -- execute("SET statement_timeout
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- quote_column_name("id_convert_to_bigint")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\"\n  RENAME COLUMN \"temp_name_for_renaming\" TO \"id_convert_to_bigint\"\n")
main:    -> 0.0007s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_request_diffs")
main:    -> 0.0000s
main: -- quote_column_name(:merge_request_id)
main:    -> 0.0001s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\"\n  RENAME COLUMN \"merge_request_id\" TO \"temp_name_for_renaming\"\n")
main:    -> 0.0006s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_request_diffs")
main:    -> 0.0000s
main: -- quote_column_name("merge_request_id_convert_to_bigint")
main:    -> 0.0000s
main: -- quote_column_name(:merge_request_id)
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\"\n  RENAME COLUMN \"merge_request_id_convert_to_bigint\" TO \"merge_request_id\"\n")
main:    -> 0.0008s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_request_diffs")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- quote_column_name("merge_request_id_convert_to_bigint")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\"\n  RENAME COLUMN \"temp_name_for_renaming\" TO \"merge_request_id_convert_to_bigint\"\n")
main:    -> 0.0007s
main: -- current_schema(nil)
main:    -> 0.0010s
main: -- quote_table_name("public")
main:    -> 0.0001s
main: -- quote_table_name("merge_request_diffs")
main:    -> 0.0001s
main: -- select_all("SELECT DISTINCT\n  p.proname AS function_name\nFROM pg_trigger tr\nJOIN pg_proc p ON tr.tgfoid = p.oid\nWHERE tr.tgisinternal IS FALSE\n  AND tr.tgrelid = '\"public\".\"merge_request_diffs\"'::regclass\n")
main:    -> 0.0058s
main: -- quote_table_name("insert_into_loose_foreign_keys_deleted_records")
main:    -> 0.0001s
main: -- execute("ALTER FUNCTION \"insert_into_loose_foreign_keys_deleted_records\" RESET ALL")
main:    -> 0.0011s
main: -- quote_table_name("trigger_0abe9dd65fd0")
main:    -> 0.0001s
main: -- execute("ALTER FUNCTION \"trigger_0abe9dd65fd0\" RESET ALL")
main:    -> 0.0019s
main: -- columns("merge_request_diffs")
main:    -> 0.0081s
main: -- columns("merge_request_diffs")
main:    -> 0.0038s
main: -- quote_table_name("
main: -- quote_table_name("merge_request_diffs")
main:    -> 0.0000s
main: -- quote_column_name(:id)
main:    -> 0.0000s
main: -- execute("ALTER SEQUENCE \"merge_request_diffs_id_seq\" OWNED BY \"merge_request_diffs\".\"id\"")
main:    -> 0.0023s
main: -- change_column_default("merge_request_diffs", :id_convert_to_bigint, "0")
main:    -> 0.0156s
main: -- change_column_default("merge_request_diffs", :id, #<Proc:0x00007993a3832a88 /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/swap_columns_default.rb:46 (lambda)>)
main:    -> 0.0143s
main: -- columns("merge_request_diffs")
main:    -> 0.0105s
main: -- columns("merge_request_diffs")
main:    -> 0.0112s
main: -- change_column_default("merge_request_diffs", :merge_request_id_convert_to_bigint, "0")
main:    -> 0.0101s
main: -- change_column_default("merge_request_diffs", :merge_request_id, nil)
main:    -> 0.0096s
main: -- quote_table_name("merge_request_diffs")
main:    -> 0.0000s
main: -- quote_column_name("merge_request_diffs_pkey")
main:    -> 0.0001s
main: -- execute("ALTER TABLE \"merge_request_diffs\" DROP CONSTRAINT \"merge_request_diffs_pkey\" CASCADE\n")
main:    -> 0.0035s
main: -- rename_index("merge_request_diffs", "bigint_idx_d108ffd7b24e5e2f8ab3", "merge_request_diffs_pkey")
main:    -> 0.0023s
main: -- quote_table_name("merge_request_diffs")
main:    -> 0.0000s
main: -- quote_table_name("merge_request_diffs_pkey")
main:    -> 0.0000s
main: -- quote_table_name("merge_request_diffs_pkey")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\" ADD CONSTRAINT \"merge_request_diffs_pkey\" PRIMARY KEY USING INDEX \"merge_request_diffs_pkey\"\n")
main:    -> 0.0034s
main: -- quote_table_name("bigint_idx_9e3cffd9404ea9edfaac")
main:    -> 0.0001s
main: -- quote_table_name("temp_234846c0eb")
main:    -> 0.0000s
main: -- execute("ALTER INDEX \"bigint_idx_9e3cffd9404ea9edfaac\" RENAME TO \"temp_234846c0eb\"")
main: == [advisory_lock_connection] object_id: 68660, pg_backend_pid: 568
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::UndefinedTable: ERROR:  relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:221:in `rename_index_with_schema'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/swapping.rb:42:in `swap_indexes'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:174:in `block (2 levels) in swap'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `each'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `block in swap'










/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/migrations/lock_retries_helpers.rb:52:in `with_lock_retries'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:101:in `with_lock_retries'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:153:in `swap'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:97:in `up'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:33:in `block in exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/query_analyzer.rb:83:in `within'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:30:in `exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables.rb:21:in `exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/require_disable_ddl_transaction_for_multiple_locks.rb:40:in `exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:46:in `ddl_transaction'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/runner_backoff/active_record_mixin.rb:21:in `execute_migration_in_transaction'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/pg_backend_pid.rb:14:in `with_advisory_lock'










/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:191:in `configure_database'










/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:158:in `configure_pg_databases'










/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:102:in `block (3 levels) in <top (required)>'










/opt/gitlab/embedded/bin/bundle:25:in `<main>'











Caused by:
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:221:in `rename_index_with_schema'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/swapping.rb:42:in `swap_indexes'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:174:in `block (2 levels) in swap'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `each'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `block in swap'










/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/migrations/lock_retries_helpers.rb:52:in `with_lock_retries'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:101:in `with_lock_retries'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:153:in `swap'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:97:in `up'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:33:in `block in exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/query_analyzer.rb:83:in `within'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:30:in `exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables.rb:21:in `exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/require_disable_ddl_transaction_for_multiple_locks.rb:40:in `exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:46:in `ddl_transaction'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/runner_backoff/active_record_mixin.rb:21:in `execute_migration_in_transaction'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/pg_backend_pid.rb:14:in `with_advisory_lock'










/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:191:in `configure_database'










/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:158:in `configure_pg_databases'










/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:102:in `block (3 levels) in <top (required)>'










/opt/gitlab/embedded/bin/bundle:25:in `<main>'











Caused by:
PG::UndefinedTable: ERROR:  relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:221:in `rename_index_with_schema'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/swapping.rb:42:in `swap_indexes'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:174:in `block (2 levels) in swap'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `each'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `block in swap'










/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/migrations/lock_retries_helpers.rb:52:in `with_lock_retries'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:101:in `with_lock_retries'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:153:in `swap'










/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:97:in `up'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:33:in `block in exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/query_analyzer.rb:83:in `within'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:30:in `exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables.rb:21:in `exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/require_disable_ddl_transaction_for_multiple_locks.rb:40:in `exec_migration'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:46:in `ddl_transaction'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/runner_backoff/active_record_mixin.rb:21:in `execute_migration_in_transaction'










/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/pg_backend_pid.rb:14:in `with_advisory_lock'










/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:191:in `configure_database'










/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:158:in `configure_pg_databases'










/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:102:in `block (3 levels) in <top (required)>'










/opt/gitlab/embedded/bin/bundle:25:in `<main>'










Tasks: TOP => db:migrate

Output of checks

Results of GitLab environment info

Expand for output related to GitLab environment info
      

Results of GitLab application Check

Expand for output related to the GitLab application check

 Checking GitLab subtasks ...  Checking GitLab Shell ...  GitLab Shell: ... GitLab Shell version \\\>= 14.45.3 ? ... OK (14.45.3) Running /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell-check Internal API available: FAILED - Internal API unreachable gitlab-shell self-check failed Try fixing it: Make sure GitLab is running; Check the gitlab-shell configuration file: sudo -u git -H editor /opt/gitlab/embedded/service/gitlab-shell/config.yml Please fix the error above and rerun the checks.  Checking GitLab Shell ... Finished  Checking Gitaly ...  Gitaly: ... default ... OK  Checking Gitaly ... Finished  Checking Sidekiq ...  Sidekiq: ... Running? ... no Try fixing it: sudo -u git -H RAILS_ENV=production bin/background_jobs start For more information see: doc/install/installation.md in section "Install Init Script" see log/sidekiq.log for possible errors Please fix the error above and rerun the checks.  Checking Sidekiq ... Finished  Checking Incoming Email ...  Incoming Email: ... Reply by email is disabled in config/gitlab.yml  Checking Incoming Email ... Finished  Checking LDAP ...  LDAP: ... LDAP is disabled in config/gitlab.yml  Checking LDAP ... Finished  Checking GitLab App ...  Database config exists? ... yes Tables are truncated? ... skipped All migrations up? ...  

Possible fixes

Patch release information for backports

High-severity bug remediation

Edited by 🤖 GitLab Bot 🤖