티스토리 뷰

반응형

Prisma Migrate로 데이터베이스 스키마 관리하기

Prisma Migrate는 데이터베이스 스키마 변경을 안전하고 체계적으로 관리할 수 있도록 도와주는 도구입니다.
이 글에서는 Prisma Migrate를 활용하여 데이터베이스 테이블을 생성하고, 변경 사항을 안전하게 적용하는 방법을 소개합니다.


1. Prisma Migrate란?

Prisma Migrate는 Prisma에서 제공하는 자동 마이그레이션 시스템으로, 기존의 SQL 마이그레이션보다 다음과 같은 장점이 있습니다.

자동 마이그레이션 관리: 데이터베이스 변경 사항을 코드로 정의하고 자동 적용
버전 관리 지원: migrations/ 디렉터리를 통해 마이그레이션 히스토리 추적 가능
안전한 변경: 데이터 손실 없이 스키마를 업데이트하는 전략 제공

Prisma Migrate를 사용하면 데이터베이스를 직접 수정할 필요 없이 Prisma Schema를 기반으로 테이블을 업데이트할 수 있습니다.


2. Prisma Migrate 설정 및 초기화

반응형

Prisma Migrate를 사용하려면 프로젝트를 먼저 설정해야 합니다.

Prisma 설치 (이미 설치했다면 건너뛰기)

npm install prisma --save-dev
npm install @prisma/client

이제 Prisma를 초기화합니다.

npx prisma init

👉 prisma/schema.prisma 파일이 생성되며, 기본 데이터베이스 연결이 .env 파일에 설정됩니다.


3. 데이터베이스 마이그레이션 생성 및 적용

3.1 Prisma Schema 모델 정의

prisma/schema.prisma 파일을 열어 다음과 같이 수정합니다.

model User {
  id        Int     @id @default(autoincrement())
  name      String
  email     String  @unique
  createdAt DateTime @default(now())
}
  • @id + @default(autoincrement()): 자동 증가하는 기본 키
  • @unique: 이메일 필드는 중복될 수 없음
  • @default(now()): 생성 날짜를 자동으로 저장

3.2 마이그레이션 파일 생성

npx prisma migrate dev --name init

실행 결과

  • prisma/migrations/ 폴더가 생성되며, 마이그레이션 SQL 파일이 저장됨
  • SQLite 또는 PostgreSQL 데이터베이스에 자동으로 테이블이 생성됨

4. Prisma Migrate를 활용한 스키마 변경

실제 프로젝트에서는 모델을 추가하거나 변경할 일이 많습니다.
이제 User 모델에 age 필드를 추가해보겠습니다.

4.1 Prisma Schema 수정

model User {
  id        Int     @id @default(autoincrement())
  name      String
  email     String  @unique
  age       Int?    // 새로운 필드 추가 (nullable)
  createdAt DateTime @default(now())
}

4.2 마이그레이션 생성

npx prisma migrate dev --name add_age_field

변경 사항

  • Prisma가 새로운 마이그레이션을 생성하고 데이터베이스를 자동 업데이트
  • 기존 데이터는 유지되며, 새로운 age 필드가 추가됨

5. 기존 데이터 유지하면서 컬럼 변경하기

실제 서비스에서 기존 데이터를 유지하면서 마이그레이션을 적용해야 할 경우
👉 Prisma Migrate는 안전한 변경 방식을 지원합니다.

예제: age 필드를 birthYear 필드로 변경

5.1 Prisma Schema 변경

model User {
  id        Int     @id @default(autoincrement())
  name      String
  email     String  @unique
  birthYear Int?    // 기존의 `age` 대신 `birthYear` 추가
  createdAt DateTime @default(now())
}

5.2 마이그레이션 적용

npx prisma migrate dev --name change_age_to_birthYear

이전 age 필드는 삭제되고 birthYear로 대체됨


6. Prisma Studio로 변경 사항 확인하기

Prisma Studio를 사용하면 마이그레이션 후 데이터베이스의 구조를 쉽게 확인할 수 있습니다.

npx prisma studio

👉 브라우저에서 http://localhost:5555 로 접속하여 변경된 테이블을 확인하세요.


7. 마이그레이션 롤백 및 수정 방법

마이그레이션을 적용했지만 문제가 발생했을 경우, 롤백할 수도 있습니다.

7.1 가장 최근 마이그레이션을 롤백하는 방법

npx prisma migrate reset

주의: reset 명령어는 모든 데이터를 삭제하고 마이그레이션을 다시 적용합니다.
프로덕션 환경에서는 reset 대신 수동 마이그레이션을 사용하세요.

7.2 특정 마이그레이션 삭제 후 다시 적용하기

rm -rf prisma/migrations/{마이그레이션 폴더}
npx prisma migrate dev

👉 특정 마이그레이션을 제거하고 다시 생성하면 데이터 손실 없이 마이그레이션을 적용할 수 있습니다.


8. 결론

Prisma Migrate를 사용하면 데이터베이스 스키마를 효율적으로 관리하고 변경 사항을 안전하게 적용할 수 있습니다.

  • 마이그레이션 생성: npx prisma migrate dev --name {이름}
  • 스키마 변경: prisma/schema.prisma 수정 후 다시 마이그레이션
  • 변경 사항 확인: npx prisma studio
  • 롤백: npx prisma migrate reset

이제 Prisma Migrate를 활용하여 데이터베이스 구조를 손쉽게 업데이트하세요! 🚀


추천 태그

Prisma ORM,Prisma Migrate,Prisma 마이그레이션,Prisma 데이터베이스 관리,Node.js ORM,TypeScript Prisma,Prisma 스키마 변경,Prisma 테이블 수정,Prisma 롤백,Prisma Studio

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함
반응형