[DB] PlanetScale push 하기

Leejunyoung·2023년 4월 14일
0

DB

목록 보기
4/5
post-thumbnail

prisma는 두가지 목적을 위해 schema.prisma 파일을 살펴본다.

첫 번째는 model들을 데이터베이스에 push하고 SQL migration을 자동으로 처리하기 위함이고,
두 번째는 데이터베이스와 상호작용하기 위해 client를 생성하고 그 client에 자동완성으로 타입들을 추가할 것이다.

위 두가지는 prisma가 이 파일을 살펴본 "뒤"에 일어나는 일들이다.

전에 살펴본 내용으로,

pscale connect carrot-market 명령어를 통해 PlanetScale과 연결했고,
URL을 얻어서 컴퓨터랑 PlanetScale 사이에 보안 tunnel을 만들었다.

schema.prisma 파일은 환경변수에 있는 DATABASE_URL을 찾고 있다.

그리고 환경변수 파일(.env)에 PlanetScale과 연결되는 보안 tunnel의 URL을 넣어주었다.

이번엔 schema.prisma 파일에 두 줄의 코드를 추가해야한다.

schema.prisma 파일에 client에서 previewFeatures라는 베타버전 옵션을 설정해준다.
그리고 우리가 preview하고자 하는 referentialIntegrity를 추가해준다.
referentialIntegrity란 다른 객체에 연결될 때 그 객체가 존재하길 바란다는 뜻이다.

그 담엔 db에 referentialIntegrity 작업을 prisma가 할 것이라고 적어준다.

이제 push를 해보자.

npx prisma db push

warn이 뜨긴 했지만 일단 성공적으로 push가 된것을 볼 수 있다.
planetscale에서도 확인을 해보자.

branches를 가보면 이렇게 테이블이 만들어져있다.

❗ 오류 해결

Preview feature "referentialIntegrity" is deprecated. The functionality can be used without specifying it as a preview feature.

The `referentialIntegrity` attribute is deprecated. Please use `relationMode` instead. Learn more at https://pris.ly/d/relation-mode

이라고 뜬다면

generator client {
provider = "prisma-client-js"
}

datasource db {
provider = "mysql"
url = env("DATABASE_URL")
relationMode = "prisma"
}

로 변경해보자.

profile
안녕하세요

0개의 댓글