Files
xrlms/prisma/README.md

163 lines
4.0 KiB
Markdown

# Prisma 데이터베이스 관리 가이드
## 📋 개요
이 문서는 Prisma를 사용한 데이터베이스 스키마 관리 및 마이그레이션 워크플로우를 설명합니다.
## 🚀 개발 환경 워크플로우
### 1. 스키마 변경 후 데이터베이스 최신화
#### 방법 A: 마이그레이션 생성 및 적용 (권장)
```bash
# 1. 스키마 변경 (prisma/schema.prisma 수정)
# 2. 마이그레이션 생성 및 적용
npm run db:migrate
# 마이그레이션 이름을 지정하려면:
npx prisma migrate dev --name add_new_field
```
이 명령어는:
- 마이그레이션 파일 생성
- 데이터베이스에 마이그레이션 적용
- Prisma Client 자동 재생성
#### 방법 B: 개발 중 빠른 프로토타이핑 (데이터 손실 가능)
```bash
# 스키마 변경 후 즉시 적용 (마이그레이션 파일 생성 안 함)
npm run db:push
```
⚠️ **주의**: `db:push`는 프로덕션 환경에서는 사용하지 마세요!
### 2. Seed 데이터 재실행
```bash
# Seed 데이터 삽입
npm run db:seed
# 또는 마이그레이션 리셋 후 자동으로 seed 실행
npm run db:migrate:reset
```
### 3. 전체 초기화 (개발 환경 전용)
```bash
# 데이터베이스 완전히 리셋 + 마이그레이션 재적용 + seed 실행
npm run db:migrate:reset
```
⚠️ **주의**: 모든 데이터가 삭제됩니다!
## 📦 프로덕션 환경 워크플로우
### 1. 마이그레이션 배포
```bash
# 생성된 마이그레이션 파일들을 프로덕션 DB에 적용
npm run db:migrate:deploy
```
이 명령어는:
- 마이그레이션 파일만 적용 (새로운 마이그레이션 생성 안 함)
- 안전하게 프로덕션에 적용 가능
### 2. Prisma Client 재생성
```bash
npm run db:generate
```
## 🔄 일반적인 워크플로우 시나리오
### 시나리오 1: 새로운 필드 추가
```bash
# 1. schema.prisma에 필드 추가
# 예: model User { ... newField String? }
# 2. 마이그레이션 생성 및 적용
npm run db:migrate --name add_new_field
# 3. (선택) Seed 데이터 업데이트 필요 시
npm run db:seed
```
### 시나리오 2: 관계 추가/변경
```bash
# 1. schema.prisma에 관계 추가
# 2. 마이그레이션 생성
npm run db:migrate --name add_relation
# 3. 기존 데이터 마이그레이션 필요 시 수동으로 처리
```
### 시나리오 3: 개발 중 스키마 실험
```bash
# 빠르게 스키마 변경 테스트 (마이그레이션 파일 생성 안 함)
npm run db:push
# 만족스러우면 마이그레이션 생성
npm run db:migrate --name experimental_changes
```
## 🛠️ 유용한 명령어
### Prisma Studio (데이터베이스 GUI)
```bash
npm run db:studio
```
브라우저에서 데이터베이스를 시각적으로 확인하고 편집할 수 있습니다.
### 기존 데이터베이스에서 스키마 가져오기
```bash
npm run db:pull
```
기존 데이터베이스 구조를 분석하여 `schema.prisma`를 생성합니다.
## 📝 마이그레이션 파일 관리
- 마이그레이션 파일은 `prisma/migrations/` 폴더에 저장됩니다
- 각 마이그레이션은 타임스탬프와 이름으로 식별됩니다
- 마이그레이션 파일은 Git에 커밋해야 합니다
- 팀원들과 마이그레이션을 공유하여 동일한 스키마를 유지합니다
## ⚠️ 주의사항
1. **프로덕션 환경**에서는 절대 `db:push``db:migrate:reset`을 사용하지 마세요
2. **마이그레이션 파일**은 항상 Git에 커밋하세요
3. **스키마 변경 전**에 백업을 권장합니다
4. **Seed 데이터**는 개발 환경에서만 사용하세요
## 🔍 문제 해결
### 마이그레이션 충돌 시
```bash
# 마이그레이션 상태 확인
npx prisma migrate status
# 문제 해결 후
npm run db:migrate:resolve
```
### Prisma Client가 최신이 아닐 때
```bash
npm run db:generate
```
## 📚 추가 리소스
- [Prisma 마이그레이션 가이드](https://www.prisma.io/docs/concepts/components/prisma-migrate)
- [Prisma CLI 참조](https://www.prisma.io/docs/reference/api-reference/command-reference)