From 791c74f3884491bf4e5223b8bd37363f97d7cc5c Mon Sep 17 00:00:00 2001 From: ttipo Date: Mon, 22 Jun 2026 02:06:50 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B4=88=EA=B8=B0=20=EB=A7=88=EC=9D=B4?= =?UTF-8?q?=EA=B7=B8=EB=A0=88=EC=9D=B4=EC=85=98=EC=97=90=20=EB=B2=A0?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4=EB=9D=BC=EC=9D=B8=20=EA=B0=80=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80(=EA=B8=B0=EC=A1=B4=20=EC=8A=A4=ED=82=A4?= =?UTF-8?q?=EB=A7=88=20DB=20=EC=9E=90=EB=8F=99=20=EC=B2=98=EB=A6=AC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 이미 스키마가 존재하는 DB(과거 synchronize 로 생성·데이터 보존)에 배포해도 부팅이 실패하지 않도록, up() 진입 시 핵심 테이블(users) 존재를 확인해 DDL 을 건너뛰고 마이그레이션을 '적용됨'으로만 기록한다(데이터/스키마 보존). 빈 DB 는 기존대로 전체 스키마를 생성한다. 검증: 빈 DB 전체 생성 / 스키마 존재 DB(이력 없음) 건너뛰고 기록·데이터 보존 / 재실행 멱등(No migrations pending) 모두 확인. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/migrations/1782060613058-CreateInitialSchema.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backend/src/migrations/1782060613058-CreateInitialSchema.ts b/backend/src/migrations/1782060613058-CreateInitialSchema.ts index 179f891..ccd8627 100644 --- a/backend/src/migrations/1782060613058-CreateInitialSchema.ts +++ b/backend/src/migrations/1782060613058-CreateInitialSchema.ts @@ -4,6 +4,13 @@ export class CreateInitialSchema1782060613058 implements MigrationInterface { name = 'CreateInitialSchema1782060613058'; public async up(queryRunner: QueryRunner): Promise { + // 베이스라인 가드 — 이미 스키마가 존재하는 기존 DB(과거 synchronize 로 생성·데이터 보존)면 + // 초기 마이그레이션을 '베이스라인'으로 간주하고 DDL 을 건너뛴다. 마이그레이션은 '적용됨'으로 + // 기록되어 다음 변경 마이그레이션부터 정상 진행되며, 기존 데이터/스키마는 보존된다. + // (빈 DB 면 이 가드를 통과해 아래 DDL 로 전체 스키마를 생성한다.) + if (await queryRunner.hasTable('users')) { + return; + } // uuid_generate_v4() 기본값에 필요한 확장 — 신규(빈) 운영 DB 에서도 보장 await queryRunner.query(`CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`); await queryRunner.query(