[ TIL ] [ ์ •๊ทœ๊ณผ์ • : ์ฃผํŠน๊ธฐ์ฃผ์ฐจ ] Prisma Migration

2023. 9. 15. 03:07ใ†0. TiL ( Today I Learned )

Migration์ด๋ž€?

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ธฐ๋ก์€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋œ๋‹ค.
๊ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๋Œ€ํ•ด ํ•˜์œ„ ํด๋” migration.sql ํŒŒ์ผ์ด ์žˆ๋Š” prisma/migration ํด๋”:

migrations/
  โ””โ”€ 20210313140442_init/
    โ””โ”€ migration.sql
  โ””โ”€ 20210313140442_added_job_title/
    โ””โ”€ migration.sql

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ _prisma_migration ํ…Œ์ด๋ธ”๋กœ, ๋‹ค์Œ์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์‹คํ–‰๋œ ๊ฒฝ์šฐ

์ ์šฉ๋œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์‚ญ์ œ๋œ ๊ฒฝ์šฐ
์ ์šฉ๋œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ

 

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ(๊ถŒ์žฅ๋˜์ง€ ์•Š์Œ), ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€(๋”ฐ๋ผ์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐœ๋ฐœ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€), ํ”„๋กœ๋•์…˜/ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€(๋”ฐ๋ผ์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€)์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋ฏธ ์ ์šฉ๋œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํŽธ์ง‘ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ธฐ๋ก๊ณผ ์šด์˜ ํ™˜๊ฒฝ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ธฐ๋ก์ด ๋ถˆ์ผ์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฒ˜์Œ์—๋Š” ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด ๊นจ์ง€์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋”๋ผ๋„ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ด€๋ จ๋ฌธ์„œ : https://www.prisma.io/docs/concepts/components/prisma-migrate/migration-histories

 

About migration histories

About migration histories

www.prisma.io


Migration ์‹œ์ž‘ํ•˜๊ธฐ

1. ํ”„๋ฆฌ์ฆˆ๋งˆ์—์„œ ์Šคํ‚ค๋งˆ ๋งŒ๋“ค๊ธฐ.

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model User {
  id    Int    @id @default(autoincrement())
  name  String
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  published Boolean @default(true)
  authorId  Int
  author    User    @relation(fields: [authorId], references: [id])
}

2. ์ฒซ ๋ฒˆ์งธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋งŒ๋“ ๋‹ค.

prisma migrate dev --name init

Prisma ์Šคํ‚ค๋งˆ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์™€ ๋™๊ธฐํ™”๋˜์–ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ธฐ๋ก์„ ์ดˆ๊ธฐํ™”.

migrations/
  โ””โ”€ 20210313140442_init/
    โ””โ”€ migration.sql

3. ์Šคํ‚ค๋งˆ์— ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

model User {
  id       Int    @id @default(autoincrement())
  jobTitle String
  name     String
  posts    Post[]
}

4. ๋‘๋ฒˆ์งธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋งŒ๋“ ๋‹ค.

prisma migrate dev --name added_job_title

Prisma ์Šคํ‚ค๋งˆ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์™€ ๋‹ค์‹œ ๋™๊ธฐํ™”๋˜๋ฉฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ธฐ๋ก์—๋Š” ๋‘ ๊ฐ€์ง€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ํฌํ•จ๋œ๋‹ค.

migrations/
  โ””โ”€ 20210313140442_init/
    โ””โ”€ migration.sql
  โ””โ”€ 20210313140442_added_job_title/
    โ””โ”€ migration.sql

 

๊ด€๋ จ๋ฌธ์„œ : https://www.prisma.io/docs/concepts/components/prisma-migrate/get-started

 

Get started with Prisma Migrate

Get started with Prisma Migrate

www.prisma.io

 


๋‚ด์ผ๋ถ€ํ„ฐ ํ”„๋กœ์ ํŠธ 2์ฃผ์— ๋Œ์ž…ํ•œ๋‹ค..

์ •๊ทœ๊ณผ์ • 3์ฃผ๊ฐ€ ๋ฒŒ์จ ์ง€๋‚˜๊ฐ”๋‹ค...

์‹œ๊ฐ„.. ๋Œ๋ ค์ฃ ..

๋‚˜ ์ž˜ํ• ์ˆ˜ ์žˆ๋‹ˆ? ใ… 

์ผ๋‹จ.. ๊ฐ€๋ณด์ž๊ณ ..