Skip to content

Commit d133daa

Browse files
committed
supabase_migrations: post added
1 parent cbd4974 commit d133daa

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: Supabase Migration 개념 & 사용법 정리
3+
description: Supabase에서 마이그레이션을 관리하는 기본 개념과 폴더 구조, CLI 명령어 및 실제 워크플로우를 간단히 정리한 가이드입니다.
4+
categories: Tips
5+
mermaid: true
6+
date: 2025-06-24 23:37 +0900
7+
---
8+
## 1. Migration 이란?
9+
10+
**Migration**(마이그레이션)은 데이터베이스 스키마(테이블, 인덱스, 뷰, 함수 등)의 변화를 **버전 관리**하기 위한 일련의 SQL 스크립트다. 코드가 git 이력을 따라가듯, 스키마 역시 **시간 순서**(timestamp)와 **의도**(description)가 남은 SQL 파일로 관리한다.
11+
12+
### 왜 필요한가?
13+
14+
* **협업** : 여러 개발자가 동시에 테이블 구조를 바꿔도 충돌 없이 머지 가능
15+
* **배포 자동화** : CI/CD 파이프라인에서 동일한 스키마를 각 환경(dev/stage/prod)에 적용
16+
* **롤백** : 잘못된 변경을 빠르게 이전 버전으로 되돌릴 수 있음
17+
18+
---
19+
20+
## 2. Supabase 의 Migration 구조
21+
22+
| 경로 | 역할 |
23+
| --------------------------- | ------------------------- |
24+
| `supabase/migrations/` | 모든 migration SQL 이 모이는 폴더 |
25+
| `yyyyMMddHHMMSS_<name>.sql` | 파일명 규칙. UTC 타임스탬프 + 설명 |
26+
| `supabase/config.toml` | DB 연결 정보·schema 포함 설정 |
27+
28+
```bash
29+
my‑project/
30+
└── supabase/
31+
├── config.toml
32+
└── migrations/
33+
├── 20250624140000_init.sql
34+
└── 20250624213030_add_profiles.sql
35+
```
36+
37+
> 파일명에 공백 대신 밑줄(\_) 사용 → `db_diff` 가 자동 생성할 때 일관성을 유지한다.
38+
{: .prompt-info}
39+
40+
---
41+
42+
## 3. 핵심 CLI 명령어
43+
44+
| 명령 | 용도 / 메모 |
45+
| ---------------------------------- | ------------------------------------------------------- |
46+
| `supabase migration new <name>` | **빈 migration 파일** 생성.<br>직접 SQL을 적거나 이후 `db diff` 로 채움 |
47+
| `supabase db diff` | 현재 DB와 마지막 migration 비교 → **새 SQL 자동 생성** |
48+
| `supabase migration up` | 로컬 DB에 **아직 적용되지 않은** migration 실행 |
49+
| `supabase migration list` | 적용/미적용 목록 확인 |
50+
| `supabase db push` | migrations 폴더의 모든 SQL을 대상 DB에 순서대로 실행(원격 배포 포함) |
51+
| `supabase db reset` | 로컬 DB 드롭 → 모든 migration 재적용(초기화) |
52+
53+
---
54+
55+
## 4. Workflow
56+
57+
1. `supabase start` 로 스택 기동
58+
2. psql / GUI 로 스키마 변경 ➜ `supabase db diff` 로 새 migration 생성
59+
3. `supabase migration up` 으로 변경 확인
60+
4. Git 커밋 & PR → CI 에서 `supabase db push` 로 스테이징/프로덕션 적용

0 commit comments

Comments
 (0)