프로그래밍/Database

Prisma에서 prisma db push vs prisma migrate dev 차이 완벽 정리!

미냐님 2025. 2. 26. 11:23
728x90

🚀 Prisma에서 prisma db push vs prisma migrate dev 차이 완벽 정리!

Prisma를 사용하여 데이터베이스 스키마를 변경할 때, prisma db push와 prisma migrate dev의 차이를 확실히 알고 계신가요?
잘못된 명령어를 사용하면 데이터가 삭제되거나, 이전 상태로 돌아가는 문제가 발생할 수 있습니다.
오늘은 이 두 가지 명령어의 차이점과 언제 사용해야 하는지를 정리해보겠습니다! 🎯


✅ prisma db push란?

📌 Prisma 스키마를 강제로 데이터베이스에 동기화하는 명령어입니다. 

npx prisma db push

🔹 특징

✅ 마이그레이션 파일(migrations/)을 생성하지 않음
✅ 현재 schema.prisma의 상태를 그대로 DB에 적용
기존 데이터를 유지하면서 테이블 구조 변경 가능
✅ 빠른 개발 및 테스트 환경에서 유용
⚠️ 운영 환경(Production)에서는 권장되지 않음

🛠 사용 예시

  • 프로젝트 초기 개발 중 빠르게 데이터베이스 구조를 변경할 때
  • 테스트 환경에서 Prisma 스키마를 즉시 반영해야 할 때

✅ prisma migrate dev란?

📌 데이터베이스 변경 사항을 추적하고, 안전하게 마이그레이션을 수행하는 명령어입니다.

npx prisma migrate dev --name update_schema

🔹 특징

✅ migrations/ 폴더에 마이그레이션 파일을 생성 (버전 관리 가능)
✅ 기존 데이터베이스 구조를 분석하고, 변경된 사항만 안전하게 적용
데이터 손실을 최소화하며, 운영 환경에서도 사용 가능
✅ schema.prisma의 변경 사항을 지속적으로 추적

🛠 사용 예시

  • 개발 환경에서 DB 변경 사항을 추적하며 유지하고 싶을 때
  • 여러 개발자가 협업하면서 일관된 DB 상태를 유지해야 할 때
  • 운영 환경에서도 데이터를 안전하게 마이그레이션하려 할 때

🔥 db push vs migrate dev 비교 정리!

prisma db pushprisma migrate dev

마이그레이션 파일 생성 ❌ 없음 ✅ 있음
기존 데이터 유지 ⚠️ 일부 데이터 손실 가능 ✅ 최대한 유지
운영 환경 사용 가능? ❌ 권장되지 않음 ✅ 사용 가능
빠른 스키마 동기화 ✅ 가능 ⚠️ 마이그레이션 기록 필요
변경 이력 유지 ❌ 유지되지 않음 ✅ 유지됨

✅ prisma db push를 실행한 후 prisma migrate dev를 실행하면?

만약 prisma db push를 실행한 후, 다시 prisma migrate dev를 실행하면 데이터베이스가 이전 상태로 되돌아갈 수도 있습니다.
왜냐하면 migrate dev는 기존 migrations/ 폴더의 기록을 기준으로 마이그레이션을 적용하기 때문입니다.

🔹 해결 방법

만약 prisma db push를 사용한 후, migrate dev를 적용하고 싶다면 다음 명령어를 실행하세요.

npx prisma migrate reset 
npx prisma migrate dev --name update_schema

 

⚠️ 주의: migrate reset은 모든 데이터를 삭제하므로, 운영 환경에서는 사용하지 마세요!


🚀 운영 환경에서는 migrate deploy 사용하기

운영 환경(Production)에서는 prisma migrate dev가 아니라 **prisma migrate deploy**를 사용해야 합니다.

npx prisma migrate deploy

✅ 이전에 생성된 마이그레이션 파일을 기준으로 데이터베이스 변경 사항을 안전하게 적용합니다.
운영 데이터는 유지되며, 스키마만 업데이트됩니다.


🎯 결론: 언제 db push vs migrate dev를 사용해야 할까?

빠르게 스키마 변경 & 테스트할 때 → prisma db push
안전하게 DB를 변경 & 마이그레이션 기록을 남길 때 → prisma migrate dev
운영 환경(Production)에서 안정적으로 적용할 때 → prisma migrate deploy

728x90

'프로그래밍 > Database' 카테고리의 다른 글

MySQL 왼쪽 조인 (Left Join)  (0) 2020.05.04
MySQL 오른쪽 조인 (Right Join)  (0) 2020.05.04
MySQL 내부 조인 (Inner Join)  (0) 2020.05.03
MySQL 인덱스 (Index)  (0) 2020.05.02
MySQL GROUP BY 함수  (0) 2020.05.02