diff --git a/db/post_migrate/20250306065243_remove_broken_fk_a2141b1522_p.rb b/db/post_migrate/20250306065243_remove_broken_fk_a2141b1522_p.rb
new file mode 100644
index 0000000000000000000000000000000000000000..0eda63800f5d68a93bbd91df9606a0dff72a739a
--- /dev/null
+++ b/db/post_migrate/20250306065243_remove_broken_fk_a2141b1522_p.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+class RemoveBrokenFkA2141b1522P < Gitlab::Database::Migration[2.2]
+  include Gitlab::Database::PartitioningMigrationHelpers::ForeignKeyHelpers
+
+  milestone '17.10'
+  disable_ddl_transaction!
+
+  SOURCE_TABLE_NAME = :p_ci_builds
+  TARGET_TABLE_NAME = :p_ci_pipelines
+  COLUMN = :auto_canceled_by_id
+  TARGET_COLUMN = :id
+  PARTITION_COLUMN = :auto_canceled_by_partition_id
+  PARTITION_TARGET_COLUMN = :partition_id
+  FK_NAME = :fk_a2141b1522_p
+
+  def up
+    with_lock_retries do
+      remove_foreign_key_if_exists(
+        SOURCE_TABLE_NAME,
+        TARGET_TABLE_NAME,
+        name: FK_NAME,
+        reverse_lock_order: true
+      )
+    end
+  end
+
+  def down
+    add_concurrent_partitioned_foreign_key(
+      SOURCE_TABLE_NAME,
+      TARGET_TABLE_NAME,
+      column: [PARTITION_COLUMN, COLUMN],
+      target_column: [PARTITION_TARGET_COLUMN, TARGET_COLUMN],
+      reverse_lock_order: true,
+      on_update: :cascade,
+      on_delete: :nullify,
+      name: FK_NAME,
+      validate: true
+    )
+  end
+end
diff --git a/db/schema_migrations/20250306065243 b/db/schema_migrations/20250306065243
new file mode 100644
index 0000000000000000000000000000000000000000..22a5d13208030990d26c3b7f898b004b4ad1167e
--- /dev/null
+++ b/db/schema_migrations/20250306065243
@@ -0,0 +1 @@
+4942e6037c4a7b1a09907b6391c638fc47c0c8bb8ce8674588bfc8bf217d30da
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index b7660fd1852f2cb52bfcbff89dff06a9520693b1..1f3ef6334f9ecb53532e718346a872e1d49ff9e7 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -40274,9 +40274,6 @@ ALTER TABLE ONLY ml_candidates
 ALTER TABLE ONLY subscription_add_on_purchases
     ADD CONSTRAINT fk_a1db288990 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE;
 
-ALTER TABLE p_ci_builds
-    ADD CONSTRAINT fk_a2141b1522_p FOREIGN KEY (auto_canceled_by_partition_id, auto_canceled_by_id) REFERENCES p_ci_pipelines(partition_id, id) ON UPDATE CASCADE ON DELETE SET NULL;
-
 ALTER TABLE ONLY protected_environment_approval_rules
     ADD CONSTRAINT fk_a3cc825836 FOREIGN KEY (protected_environment_project_id) REFERENCES projects(id) ON DELETE CASCADE;