mysql & prisma 개발환경 구축
- Prisma는 데이터베이스 ORM
- Prisma로 DB 관련 코드를 작성하면 여러 DB에 거의 똑같은 코드로 연결 가능
prisma 세팅
설치
npm install prisma --save-dev
npx prisma init
npx prisma init를 진행하면 prisma/schema.prisma 파일 생성됨
- prisma/schema.prisma : 이 파일은 가장 기본이 되는 DB의 뼈대를 만드는 파일
- Prisma에서 사용하는 Model(모델)이 qlite, PostgreSql, MySql 등에서는 테이블로 전환
db provider를 mysql로 변경
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
.env 파일에서 mysql user의 아이디와 패스워드 그리고 db명을 입력
- 예시
DATABASE_URL="mysql://johndoe:randompassword@localhost:3306/mydb" // .env.local
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
datasource db { provider = "mysql" url = "mysql://{username}:{비밀번호}@localhost:{port}/{Name}" }
prisma/schema.prisma 파일에서 다음 스키마를 입력
- generator client : Prisma는 백엔드쪽이기 때문에 Next.js 같은 Client쪽에서 Prisma DB를 연결하려면 prisma-client가 필요
- datasource 부분이 바로 어떤 종류의 DB를 쓰는지 & 해당 파일에 대한 url 부분
- 모델은 보통 대문자로 입력
- 모든 SQL의 테이블엔 id가 들어가야 함
- @default(autoincrement()) 명령어는 id를 자동으로 하나씩 증가하게 설정
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
// 여기서부터 추가됨
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
password String
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
Prisma 스키마, 코드 연결
npx prisma migrate dev --name init
prisma 내부에dev.db 파일과 migrations 폴더 생성된 것 확인
npx prisma studio 설치하여 연결 확인
npx prisma studio
Next.js에서 Prisma를 사용할 수 있게 하는 SDK 설치
npm i @prisma/client
Next.js에서 Prisma Client를 불러오는 모듈 작성
// /app/lib/prisma.ts
import { PrismaClient } from "@prisma/client";
const globalForPrisma = global as unknown as { prisma: PrismaClient };
export const prisma = globalForPrisma.prisma || new PrismaClient();
if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;
export default prisma;
'개발환경 구축' 카테고리의 다른 글
AWS - cloudfront, s3, route53, ACM https 배포 와 git actions을 이용한 CI/CD 설정 (Access Denied : SPA를 통해 S3-floudFront배포를 진행하면 Redirect 오류 및 cloudfront무효화) (0) | 2024.02.14 |
---|---|
react - kakao map API 설정하기 (0) | 2022.08.10 |
Docker 설치 및 세팅 (for mac) (0) | 2022.08.09 |
react error - 배포할 때 발생하는 흰 화면 Uncaught SyntaxError: Unexpected token '<' 오류 (0) | 2022.08.08 |
readme.md 작성 요령 (0) | 2022.07.25 |