Skip to main content
Migration νƒ­μ—μ„œλŠ” Entity 변경사항을 λ°μ΄ν„°λ² μ΄μŠ€μ— λ°˜μ˜ν•˜κΈ° μœ„ν•œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ μ‹œκ°μ μœΌλ‘œ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€. CLI의 pnpm migrate λͺ…λ Ήμ–΄λ₯Ό UI둜 λŒ€μ²΄ν•©λ‹ˆλ‹€.

Migration νƒ­ ꡬ쑰

Migration 관리 ν™”λ©΄Migration μ‹€ν–‰ ν™”λ©΄

Migration 관리 ν™”λ©΄

Migration 탭은 두 κ°€μ§€ μ£Όμš” μ˜μ—­μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€:
  • μ™Όμͺ½ Sidebar: λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ λͺ©λ‘ (Pending/Applied μƒνƒœλ³„λ‘œ κ·Έλ£Ήν™”)
  • 였λ₯Έμͺ½ Content: μ„ νƒν•œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ˜ 상세 정보와 Preview

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μƒνƒœ 확인

Status 확인

[Check Status] λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ ν˜„μž¬ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μƒνƒœλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€λ³„ μƒνƒœ

μ—¬λŸ¬ λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ„€μ •λœ 경우 각 DB의 μƒνƒœλ₯Ό κ°œλ³„μ μœΌλ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€:

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 생성

Entityλ₯Ό μˆ˜μ •ν•˜λ©΄ Sonamuκ°€ μžλ™μœΌλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ μƒμ„±ν•©λ‹ˆλ‹€.

μžλ™ μƒμ„±λ˜λŠ” 경우

λ‹€μŒκ³Ό 같은 Entity 변경사항이 μžˆμ„ λ•Œ:

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 파일 확인

μƒμ„±λœ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ νŒŒμΌμ„ ν΄λ¦­ν•˜λ©΄ λ‚΄μš©μ„ 미리 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€:

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ‹€ν–‰

단일 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ‹€ν–‰

  1. λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 파일 선택
  2. [Apply] λ²„νŠΌ 클릭
  3. 확인 λͺ¨λ‹¬μ—μ„œ [Confirm] 클릭
μ‹€ν–‰ κ³Όμ •:

λͺ¨λ“  Pending λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ‹€ν–‰

[Run All] λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ λŒ€κΈ° 쀑인 λͺ¨λ“  λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰ν•©λ‹ˆλ‹€.
ν”„λ‘œλ•μ…˜ 주의: ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€μ— λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ μ‹€ν–‰ν•˜κΈ° μ „μ—λŠ” λ°˜λ“œμ‹œ λ°±μ—…ν•˜μ„Έμš”.

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ λ‘€λ°±

단일 λ‘€λ°±

  1. Applied μƒνƒœμ˜ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 선택
  2. [Rollback] λ²„νŠΌ 클릭
  3. 확인 λͺ¨λ‹¬μ—μ„œ [Confirm] 클릭
λ‘€λ°± κ³Όμ •:
데이터 손싀 μœ„ν—˜: 둀백은 ν…Œμ΄λΈ”μ΄λ‚˜ μ»¬λŸΌμ„ μ‚­μ œν•  수 μžˆμœΌλ―€λ‘œ 데이터가 손싀될 수 μžˆμŠ΅λ‹ˆλ‹€.

Migration Preview

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ μ‹€ν–‰ν•˜κΈ° 전에 μ–΄λ–€ 변경이 λ°œμƒν• μ§€ 미리 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

Preview λ‚΄μš©

μ•„μ΄μ½˜ 의미:
  • βœ… μΆ”κ°€: μƒˆλ‘œμš΄ ν…Œμ΄λΈ”/컬럼/인덱슀
  • πŸ”„ μˆ˜μ •: κΈ°μ‘΄ 컬럼 νƒ€μž…/길이 λ³€κ²½
  • ⚠️ μ‚­μ œ: ν…Œμ΄λΈ”/컬럼 μ‚­μ œ (데이터 손싀 κ°€λŠ₯)

닀쀑 λ°μ΄ν„°λ² μ΄μŠ€ 관리

SonamuλŠ” μ—¬λŸ¬ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ™μ‹œμ— 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€ 선택

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ‹€ν–‰ μ‹œ λŒ€μƒ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€:
  • β˜‘οΈ Development Master
  • β˜‘οΈ Testing
  • ☐ Production (μˆ˜λ™ 선택)
기본적으둜 _master둜 λλ‚˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ™€ test λ°μ΄ν„°λ² μ΄μŠ€μ— μžλ™μœΌλ‘œ μ μš©λ©λ‹ˆλ‹€. ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€λŠ” λͺ…μ‹œμ μœΌλ‘œ 선택해야 μ μš©λ©λ‹ˆλ‹€.

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μˆœμ„œ

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ€ 파일λͺ…μ˜ νƒ€μž„μŠ€νƒ¬ν”„ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€:

μˆœμ„œ λ³€κ²½

μˆœμ„œλ₯Ό λ³€κ²½ν•΄μ•Ό ν•˜λŠ” 경우:
  1. λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 파일λͺ…μ˜ νƒ€μž„μŠ€νƒ¬ν”„ μˆ˜μ •
  2. 파일 μ‹œμŠ€ν…œμ—μ„œ 직접 λ³€κ²½
  3. UIμ—μ„œ μƒˆλ‘œκ³ μΉ¨
μ™Έλž˜ν‚€ 관계 주의: μ°Έμ‘°ν•˜λŠ” ν…Œμ΄λΈ”μ΄ λ¨Όμ € μƒμ„±λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 예: posts.user_id β†’ users.id 관계라면 users ν…Œμ΄λΈ”μ„ λ¨Όμ € 생성해야 함

문제 ν•΄κ²°

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ‹€νŒ¨

증상: λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ‹€ν–‰ 쀑 였λ₯˜ λ°œμƒ 원인 및 ν•΄κ²°:

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 기둝 뢈일치

증상: μ‹€μ œ DB μƒνƒœμ™€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 기둝이 닀름 ν•΄κ²°:

λ‘€λ°± λΆˆκ°€λŠ₯

증상: λ‘€λ°± μ‹œλ„ μ‹œ 였λ₯˜ λ°œμƒ 원인: down() ν•¨μˆ˜κ°€ μ œλŒ€λ‘œ μ •μ˜λ˜μ§€ μ•ŠμŒ ν•΄κ²°: λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ νŒŒμΌμ„ μ—΄μ–΄ down() ν•¨μˆ˜λ₯Ό μˆ˜μ •

μ‹€μ „ 팁

1. μž‘μ€ λ‹¨μœ„λ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜

2. ν”„λ‘œλ•μ…˜ μ „ ν…ŒμŠ€νŠΈ

3. λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 기둝 관리

  • Git에 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 파일 컀밋
  • 컀밋 λ©”μ‹œμ§€μ— λ³€κ²½ λ‚΄μš© λͺ…μ‹œ
  • νŒ€μ›λ“€κ³Ό λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μˆœμ„œ 곡유

λ‹€μŒ 단계

Scaffolding νƒ­

Model μ½”λ“œ μžλ™ 생성

migrate CLI

CLI둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 관리