본문 바로가기

back-end/NestJs

Prisma에서 자주 사용하는 명령어들과 그 용도

반응형


1. npx prisma init

용도:

  • Prisma 프로젝트를 초기화할 때 사용.
  • prisma 디렉토리와 기본적인 설정 파일을 생성.

실행 결과:

  1. prisma/schema.prisma 파일 생성:
    • 데이터베이스 모델을 정의하는 파일.
  2. 환경 변수 파일(.env) 생성:
    • 데이터베이스 연결 URL을 설정.
  3. 예시 디렉토리 구조:
prisma/
├── schema.prisma
.env

 

사용 시점:

  • 새로운 Prisma 프로젝트를 시작할 때.
  • NestJS, Express 등과 Prisma를 처음 통합할 때.

명령어 실행:

npx prisma init

2. npx prisma migrate dev

용도:

  • 데이터베이스 스키마를 업데이트할 때 사용.
  • 변경된 모델을 데이터베이스에 적용하고, 마이그레이션 파일을 생성.

실행 결과:

  1. prisma/migrations 디렉토리 생성:
    • 변경된 데이터베이스 스키마를 SQL 파일로 기록.
    • 각 마이그레이션은 타임스탬프 기반 폴더에 저장.
    prisma/
    ├── migrations/
    │   ├── 20250108120000_add_users_table/
    │   │   └── migration.sql
    
  2. 데이터베이스에 스키마 변경사항 적용:
    • 테이블 생성, 컬럼 추가/수정 등.

사용 시점:

  • schema.prisma에 모델을 수정하고 이를 데이터베이스에 적용할 때.
  • 개발 환경에서 마이그레이션을 빠르게 테스트할 때.

명령어 실행:

npx prisma migrate dev --name <migration-name>
  • 예시:
    npx prisma migrate dev --name add_user_model
    

3. npx prisma generate

용도:

  • Prisma Client를 생성할 때 사용.
  • schema.prisma의 데이터베이스 모델을 기반으로 애플리케이션에서 사용 가능한 코드(Prisma Client)를 생성.

실행 결과:

  1. node_modules/@prisma/client 생성:
    • Prisma Client 코드가 이 디렉토리에 저장.
    • 애플리케이션 코드에서 데이터베이스와 상호작용할 때 사용.
  2. 애플리케이션에서 다음과 같이 사용 가능:
  3. import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); const users = await prisma.user.findMany(); console.log(users);

사용 시점:

  • schema.prisma를 수정한 후 Prisma Client를 다시 생성할 때.
  • 마이그레이션 후, 클라이언트 코드에 변경 사항을 반영할 때.

명령어 실행:

npx prisma generate

요약

명령어 용도 사용 시점

npx prisma init 프로젝트 초기화, Prisma 설정 파일 및 디렉토리 생성 새로운 Prisma 프로젝트를 시작할 때
npx prisma migrate dev 데이터베이스 스키마 업데이트, 마이그레이션 파일 생성 모델 변경 후 데이터베이스와 동기화가 필요할 때
npx prisma generate Prisma Client 생성, 데이터베이스와 상호작용할 수 있는 코드 생성 모델 변경 후 애플리케이션에서 Prisma Client를 업데이트할 때

실행 순서 (새로운 프로젝트의 경우):

  1. 초기화:
    npx prisma init
    
  2. 모델 정의:
    schema.prisma에 모델(User, Post 등)을 정의.
  3. 마이그레이션 실행:
    npx prisma migrate dev --name <migration-name>
    
  4. Prisma Client 생성:
    npx prisma generate
    

 

  • npx prisma db push
    schema.prisma 파일에 설정된 모델을 바탕으로 MySQL(DB)에 정보를 업로드 한다.
  • prisma db push
    schema.prisma 파일에 정의된 설정값을 실제 db에 반영한다.(db 구조를 변경하거나 새로운 테이블을 생성할 수 있다.)
  • npx prisma init
    schema.prisma 파일과 같은 필요한 설정 파일들이 생성된다.
  • prisma generate
    Prisma Client를 생성하거나 업데이트한다.
    대표적으로, schema.prisma 파일에 변경 사항이 생겼거나, 데이터베이스 구조가 변경되었을때, 이 명령어를 사용해 Prisma Client를 최신 상태로 유지한다.
  • prisma db pull
    현재 연결된 데이터베이스의 구조를 prisma.schema 파일로 가져옵니다.(pull)
    데이터베이스에서 구조 변경이 됐을 떄, 이 명령어를 사용하면 Prisma Schema를 최신 상태로 유지한다.
    이후 - prisma generate 명령어를 사용해 변경 사항을 Prisma Client에 반영할 수 있다.
  • npx prisma db push --force-reset
    db 정의한 거 새로하거나 db데이터 삭제 후 다시 테이블 만듦

 

 * 이후 실행 npm run start:dev