From 52afe72f17d6c1d76be83b3d2762a6e2c827a17b Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 4 Jan 2026 03:14:00 -0800 Subject: [PATCH] fix(authorization): migration should drop both constraint and index MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The original migration only used DROP CONSTRAINT which failed silently because Prisma created an INDEX instead. Added DROP INDEX as well to handle both cases in future deployments. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../prisma/migrations/20241217_add_soft_delete/migration.sql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/services/authorization-service/prisma/migrations/20241217_add_soft_delete/migration.sql b/backend/services/authorization-service/prisma/migrations/20241217_add_soft_delete/migration.sql index 6c66c32f..8a28210a 100644 --- a/backend/services/authorization-service/prisma/migrations/20241217_add_soft_delete/migration.sql +++ b/backend/services/authorization-service/prisma/migrations/20241217_add_soft_delete/migration.sql @@ -10,9 +10,11 @@ UPDATE authorization_roles SET deleted_at = revoked_at WHERE status = 'REVOKED' AND deleted_at IS NULL; --- 3. 删除原有的唯一约束(如果存在) +-- 3. 删除原有的唯一约束或索引(如果存在) +-- 注意: Prisma 生成的可能是 CONSTRAINT 或 INDEX,需要两种都尝试删除 ALTER TABLE authorization_roles DROP CONSTRAINT IF EXISTS authorization_roles_account_sequence_role_type_region_code_key; +DROP INDEX IF EXISTS authorization_roles_account_sequence_role_type_region_code_key; -- 4. 创建部分唯一索引(只对未删除的记录生效) -- 这是大厂的标准做法,支持软删除后重新创建相同记录