우선 PlanetScale(https://planetscale.com/) 사이트에 접속해서 계정 생성을 완료합니다.
다음은 PlanetScale CLI를 설치하기 위해 powershell 터미널 창을 열고 아래 명령어를 입력해 scoop을 설치합니다. (참고: https://scoop.sh/)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time
irm get.scoop.sh | iex
scoop 설치 후 pscale을 설치합니다. (참고: https://github.com/planetscale/cli#installation)
scoop bucket add pscale https://github.com/planetscale/scoop-bucket.git
scoop install pscale mysql
자, 이제 PlanetScale CLI가 설치되었으니 테스트 할 새로운 NextJS 프로젝트를 하나 생성합니다.
npx create-next-app@latest
해당 프로젝트 폴더에 들어가서 prisma 패키지를 설치합니다.
npm i prisma -D
npm i @prisma/client
prisma 초기화 명령어를 입력합니다.
npx prisma init
초기화 명령어 실행 후 schema.prisma 와 .env 파일이 생성됩니다.
schema 편집을 편리하게 하기 위해 vscode extension을 설치해줍니다.
schema.prisma 파일에 아래와 같이 사용할 table의 schema를 정의 해줍니다. prisma schema 정의 방법에 대한 자세한 설명은 https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#model-field-scalar-types 에서 확인 하시면 됩니다.
기본 생성된 schema에 db provider가 postgresql로 되어있는데 mysql로 변경합니다.
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model Test {
id Int @id @default(autoincrement())
name String
}
PlanetScale 과 연결을 위해 아래 명령어를 입력해서 PlanetScale 사이트 로그인을 진행합니다.
pscale auth login
로그인 완료 후 터미널창에 아래와 같이 로그인 완료 메세지를 확인합니다.
이제 PlanetScale에서 생성해놓은 Database와 연결하기 위해 아래 명령어를 입력합니다. (예: DB명이 mytestdb일 경우)
pscale connect mytestdb
.env 파일에 DATABASE_URL을 아래와 같이 변경해줍니다.
DATABASE_URL="mysql://127.0.0.1:3306/mytestdb"
schema.prisma에 정의한 table model을 DB에 생성하기 위해 아래 명령어를 입력합니다.
npx prisma db push
push가 성공적으로 완료되면 PlanetScale 웹 사이트에서 새로운 테이블 하나가 생성된 것을 확인 할 수 있습니다.
위 화면에서 Tables를 클릭해보면 생성된 Table 스키마를 확인 할 수 있습니다.
여기까지 마무리하면 이제 NextJS에서 PlanetScale에 생성된 DB로 읽고 쓰기를 할 수 있습니다.