주제1 | 스키마. 프리즈마 |
작성이유 | 참고하기 위해 |
문제상황
상황 | 프리즈마.스키마 사용방법 DBMS : 데이터베이스 관리 시스템 - (MySQL, PostgresQL, MS-SQL, Oracle 등.. 그걸 편리하게 사용하게 해주는 prisma) Orm : 필드명 테이블 명을 변경해서 디비에 요청 => 우리가 테이블과 필드명을 굳이 하지 않아도 됨 (프리즈마 : ORM중 하나) ;
|
사용방법 | 설치 Prisma이미 DB 에 table 이 존재할 경우 반영prisma cli 설치설치 확인 : npx prisma 프로젝트에 prisma 초기화
- .env 에 database 환경변수 추가 됨
- 이후 설치되고, 프로젝트에서 사용될 prisma client 를 사용하기 위한 설정 파일 생성 : npx prisma init
DB 정보 작성
- .env 에 database 정보 작성
DB type 수정
- schema.prisma 에서 사용할 DB type 수정 : ./prisma/schema.prisma 의 db->provider 를 mysql 로 수정
원격의 db 구조를 프로젝트에 끌어오기
- schemas.prisma 에 db 의 table 구조가 자동 작성됨 : npx prisma db pull
@prisma/client 설치
- 프로젝트 코드에서 실제로 사용할 패키지 설치 : yarn add @prisma/client
prisma client 에 schema.prisma 적용 : npx prisma generate
|
해결방법 풀이 | |
그 외 | 오류 났을 때 예시 : petSitter PetSitter @relation(fields: [sitterId], references: [id]) 스키마.프리즈마 관계설정 할 때 이 스키마 정의에서 `petSitter`와 `PetSitter`는 다른 용도로 사용되고 있습니다. - `petSitter`는 데이터베이스 테이블 이름을 나타냅니다. 일반적으로 데이터베이스 테이블 이름은 소문자와 언더스코어로 작성합니다.[5] - `PetSitter`는 Prisma 클라이언트에서 사용할 모델 이름을 나타냅니다. 모델 이름은 대문자 캐멀 케이스로 작성하는 것이 관례입니다.[5] 따라서 `petSitter`는 실제 데이터베이스 테이블 이름이고, `PetSitter`는 이 테이블에 대응하는 Prisma 모델 이름입니다. 이렇게 다른 네이밍 규칙을 사용하는 이유는 코드 가독성과 일관성을 높이기 위함입니다. |
npx prisma db push --force-reset
프리즈마 변경시 (npx prisma db push 인데 가끔 잔여 데이터베이스 찌꺼기 같은게 남아있을 경우)