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