728x90

prisma db push 명령어는 개발 환경에서 사용되는 Prisma CLI 명령어입니다.
이 명령어의 역할은 개발자가 작성한 최신 schema.prisma 파일의 내용을 읽어서, 실제 데이터베이스에 즉시 반영(푸시)하여 동기화하는 것입니다.
쉽게 말해, "스키마 파일에 변경사항이 있으면 마이그레이션(migration) 파일 생성 과정 없이 바로 DB 구조를 업데이트해!" 라고 명령하는 것입니다.
💡 prisma db push의 특징 및 용도
| 특징 | 설명 |
| 개발 전용 | 이 명령어는 개발 또는 테스트 환경에서만 사용해야 합니다. 데이터 손실 위험 때문에 프로덕션 환경에서는 절대 사용하지 않습니다. |
| 즉시 반영 | 마이그레이션 파일(.sql 파일)을 생성하거나 기록을 남기지 않고, 변경 사항을 즉시 데이터베이스에 적용합니다. |
| 빠른 반복 개발 | 작은 스키마 변경이 잦은 개발 초기 단계에서 개발 속도를 높이는 데 최적화되어 있습니다. |
| 데이터 손실 경고 | 테이블 삭제, 컬럼 타입 변경 등 데이터 손실을 유발하는 변경이 있을 경우, 사용자에게 경고 메시지를 보여주고 진행 여부를 확인합니다. |
📝 예시로 이해하기
다음과 같이 schema.prisma 파일에 User 모델이 있다고 가정해 봅시다.
1단계: 초기 모델 정의
// schema.prisma (최초 상태)
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
}
이 상태에서 prisma db push를 실행하면, MySQL 데이터베이스에 User 테이블이 생성됩니다.
npx prisma db push
# 결과: 데이터베이스에 id, email, name 컬럼을 가진 User 테이블이 생성됨.
2단계: 모델 변경 및 db push 실행
이제 개발자가 User 모델에 isActive라는 새로운 컬럼을 추가하고, name 컬럼을 필수로 변경했습니다.
// schema.prisma (변경 후)
model User {
id Int @id @default(autoincrement())
email String @unique
name String // String? (선택)에서 String (필수)로 변경
isActive Boolean @default(true) // 신규 컬럼 추가
}
다시 prisma db push를 실행하면, Prisma는 변경된 사항을 감지하여 MySQL에 적용합니다.
npx prisma db push
# 결과:
# 1. User 테이블에 isActive 컬럼이 추가되고 기본값(true)이 설정됨.
# 2. User 테이블의 name 컬럼이 NULL 허용(선택)에서 NOT NULL(필수)로 변경됨.
# (name 컬럼 변경은 데이터 손실 위험이 있으므로 경고 메시지가 나올 수 있습니다.)
🆚 prisma db push vs. prisma migrate dev

두 명령어 모두 데이터베이스 구조를 변경하지만, 목적과 안전성에서 큰 차이가 있습니다.
| 명령어 | 목적 및 사용 환경 | 안전성 및 기록 |
| prisma db push | 빠른 개발/테스트 환경. (즉시 반영) | 위험 높음. 마이그레이션 파일 없음. 데이터 손실 가능성이 높음. |
| prisma migrate dev | 프로덕션 환경을 포함한 모든 환경. (체계적 관리) | 안전함. 변경 사항을 추적하는 마이그레이션 파일 생성. 데이터 손실 방지 로직이 내장됨. |
728x90
'Nest.js를 배워보자' 카테고리의 다른 글
| 🏛️NestJS Prisma CRUD 모듈을 만들어보자!! (0) | 2025.12.10 |
|---|---|
| 🔄 MySQL CREATE TABLE 문으로 Prisma 스키마 만들기 (0) | 2025.12.09 |
| 🛠️ NestJS Prisma 6에서 자료가 없을 때 Seed 데이터 자동 추가하기 (0) | 2025.12.09 |
| 🛠️ NestJS + Prisma에서 MyBatis처럼 XML로 SQL 소스를 관리하는 방법 (0) | 2025.12.09 |
| ✨ Prisma 7과 NestJS, MySQL로 시작하기: 차세대 ORM 가이드 (1) | 2025.12.09 |