Update 18.5.2 to 18.6 : PG::UndefinedTable: ERROR: relation "index_merge_requests_on_assignee_id" does not exist

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Im getting this error on DB migration during the update.

Running handlers complete
[2025-11-21T09:29:39+01:00] ERROR: Exception handlers complete
Infra Phase failed. 1 resources updated in 23 seconds
[2025-11-21T09:29:39+01:00] FATAL: Stacktrace dumped to /opt/gitlab/embedded/cookbooks/cache/cinc-stacktrace.out
[2025-11-21T09:29:39+01:00] FATAL: ---------------------------------------------------------------------------------------
[2025-11-21T09:29:39+01:00] FATAL: PLEASE PROVIDE THE CONTENTS OF THE stacktrace.out FILE (above) IF YOU FILE A BUG REPORT
[2025-11-21T09:29:39+01:00] FATAL: ---------------------------------------------------------------------------------------
[2025-11-21T09:29:39+01: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: 69940, pg_backend_pid: 543307
main: == 20251016010314 SwapColumnsForMergeRequestsBigintConversionStageOne: migrating 
main: -- column_exists?("merge_requests", "assignee_id_convert_to_bigint")
main:    -> 0.0157s
main: -- column_exists?("merge_requests", "merge_user_id_convert_to_bigint")
main:    -> 0.0022s
main: -- column_exists?("merge_requests", "updated_by_id_convert_to_bigint")
main:    -> 0.0020s
main: -- column_exists?("merge_requests", "milestone_id_convert_to_bigint")
main:    -> 0.0019s
main: -- column_exists?("merge_requests", "source_project_id_convert_to_bigint")
main:    -> 0.0019s
main: -- columns("merge_requests")
main:    -> 0.0018s
main: -- columns("merge_requests")
main:    -> 0.0019s
main: -- columns("merge_requests")
main:    -> 0.0019s
main: -- columns("merge_requests")
main:    -> 0.0019s
main: -- columns("merge_requests")
main:    -> 0.0019s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("assignee_id")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"assignee_id\" TO \"temp_name_for_renaming\"\n")
main:    -> 0.0004s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("assignee_id_convert_to_bigint")
main:    -> 0.0000s
main: -- quote_column_name("assignee_id")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"assignee_id_convert_to_bigint\" TO \"assignee_id\"\n")
main:    -> 0.0003s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- quote_column_name("assignee_id_convert_to_bigint")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"temp_name_for_renaming\" TO \"assignee_id_convert_to_bigint\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("merge_user_id")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"merge_user_id\" TO \"temp_name_for_renaming\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("merge_user_id_convert_to_bigint")
main:    -> 0.0000s
main: -- quote_column_name("merge_user_id")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"merge_user_id_convert_to_bigint\" TO \"merge_user_id\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- quote_column_name("merge_user_id_convert_to_bigint")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"temp_name_for_renaming\" TO \"merge_user_id_convert_to_bigint\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("updated_by_id")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"updated_by_id\" TO \"temp_name_for_renaming\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("updated_by_id_convert_to_bigint")
main:    -> 0.0000s
main: -- quote_column_name("updated_by_id")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"updated_by_id_convert_to_bigint\" TO \"updated_by_id\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- quote_column_name("updated_by_id_convert_to_bigint")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"temp_name_for_renaming\" TO \"updated_by_id_convert_to_bigint\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("milestone_id")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"milestone_id\" TO \"temp_name_for_renaming\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("milestone_id_convert_to_bigint")
main:    -> 0.0000s
main: -- quote_column_name("milestone_id")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"milestone_id_convert_to_bigint\" TO \"milestone_id\"\n")
main:    -> 0.0004s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- quote_column_name("milestone_id_convert_to_bigint")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"temp_name_for_renaming\" TO \"milestone_id_convert_to_bigint\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("source_project_id")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"source_project_id\" TO \"temp_name_for_renaming\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name("source_project_id_convert_to_bigint")
main:    -> 0.0000s
main: -- quote_column_name("source_project_id")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"source_project_id_convert_to_bigint\" TO \"source_project_id\"\n")
main:    -> 0.0002s
main: -- clear_cache!(nil)
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main:    -> 0.0000s
main: -- quote_column_name("source_project_id_convert_to_bigint")
main:    -> 0.0000s
main: -- execute("ALTER TABLE \"merge_requests\"\n  RENAME COLUMN \"temp_name_for_renaming\" TO \"source_project_id_convert_to_bigint\"\n")
main:    -> 0.0002s
main: -- current_schema(nil)
main:    -> 0.0002s
main: -- quote_table_name("public")
main:    -> 0.0000s
main: -- quote_table_name("merge_requests")
main:    -> 0.0000s
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_requests\"'::regclass\n")
main:    -> 0.0008s
main: -- quote_table_name("insert_into_loose_foreign_keys_deleted_records")
main:    -> 0.0000s
main: -- execute("ALTER FUNCTION \"insert_into_loose_foreign_keys_deleted_records\" RESET ALL")
main:    -> 0.0002s
main: -- quote_table_name("trigger_ecc2780007c2")
main:    -> 0.0000s
main: -- execute("ALTER FUNCTION \"trigger_ecc2780007c2\" RESET ALL")
main:    -> 0.0002s
main: -- quote_table_name("index_merge_requests_on_assignee_id")
main:    -> 0.0000s
main: -- quote_table_name("temp_020042c695")
main:    -> 0.0000s
main: -- execute("ALTER INDEX \"index_merge_requests_on_assignee_id\" RENAME TO \"temp_020042c695\"")
main: == [advisory_lock_connection] object_id: 69940, pg_backend_pid: 543307
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::UndefinedTable: ERROR:  relation "index_merge_requests_on_assignee_id" 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/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:62:in `block (2 levels) in swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:60:in `each'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:60: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/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:53:in `swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:36: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 "index_merge_requests_on_assignee_id" 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/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:62:in `block (2 levels) in swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:60:in `each'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:60: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/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:53:in `swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:36: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 "index_merge_requests_on_assignee_id" 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/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:62:in `block (2 levels) in swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:60:in `each'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:60: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/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:53:in `swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20251016010314_swap_columns_for_merge_requests_bigint_conversion_stage_one.rb:36: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
(See full trace by running task with --trace)
STDERR: 
---- End output of "bash"  ----
Ran "bash"  returned 1
===
There was an error running gitlab-ctl reconfigure. Please check the output above for more
details.
===
Edited by 🤖 GitLab Bot 🤖