✅ 특정 마이그레이션으로 되돌리기 (migrate 앱명 마이그레이션번호)

2025. 5. 13. 11:14·기술블로그-Django편

🔄 Django 마이그레이션 롤백과 파일 삭제 완전 정리!

Django에서 makemigrations와 migrate로 진행한 작업을 되돌리고 싶을 때, 즉 "롤백"할 수 있는 다양한 방법과 주의사항을 정리해드립니다.


✅ 1. 특정 마이그레이션으로 되돌리기

python manage.py migrate <앱이름> <마이그레이션번호>

예시:

python manage.py migrate blog 0002

👉 blog 앱을 0002 상태로 되돌림
→ 0003, 0004 등 이후 마이그레이션은 적용 해제됨


✅ 2. 완전히 초기 상태로 되돌리기 (모든 마이그레이션 제거)

python manage.py migrate <앱이름> zero

예시:

python manage.py migrate blog zero

👉 blog 앱에서 생성된 모든 테이블 삭제
⚠️ 데이터도 함께 삭제되니 반드시 백업 필요!


✅ 3. 마이그레이션 파일 자체 삭제하기

👉 makemigrations만 하고 migrate를 하지 않았다면:

rm blog/migrations/0002_*.py

그 후 다시:

python manage.py makemigrations

💡 주의: 이미 migrate로 적용된 상태라면 먼저 롤백한 후 파일 삭제 필요!


✅ 4. 마이그레이션 적용 이력 확인하기

python manage.py showmigrations blog

출력 예시:

[ ] 0001_initial
[X] 0002_add_author_field
[X] 0003_add_title_max_length

☑️ 체크 표시 = 적용된 마이그레이션
→ 현재 DB 상태 확인 가능


🧠 Git 비유로 정리하면?

Git 명령어 Django 마이그레이션 명령 설명

git revert <commit> migrate 앱명 <버전> 특정 시점으로 안전하게 복원
git reset --hard migrate 앱명 zero 모든 변경 제거
git log showmigrations 버전/기록 확인
git rm 마이그레이션 파일 수동 삭제 파일 삭제 시 조심해야 함

❗ 마이그레이션 파일 삭제 주의사항

✅ 롤백 후 삭제는 가능

python manage.py migrate blog 0002
rm blog/migrations/0003_*.py

→ 안전하게 적용 해제 후 파일 삭제

❌ 파일만 삭제하면?

rm blog/migrations/0003_*.py

→ showmigrations에는 [X]로 남아 있고,
→ 이후 migrate, makemigrations에서 오류 발생 가능!
("No such migration", "Inconsistent history")


✅ 안전한 마이그레이션 롤백 순서

순서 설명

1️⃣ migrate 앱명 <버전>으로 롤백
2️⃣ 해당 마이그레이션 파일 수동 삭제
3️⃣ makemigrations로 새로운 변경 생성
4️⃣ migrate로 최종 적용

💡 실전 꿀팁

  • 팀 프로젝트에서는 파일 삭제보다 새로운 마이그레이션 생성 권장
  • 혼자 실습하는 경우에는 위 순서대로 삭제해도 OK
  • 중요한 데이터는 반드시 백업하고 시도할 것!

✅ 결론 정리

상황 안전 여부 설명

롤백 후 파일 삭제 ✅ 가능 migrate로 상태를 되돌렸다면 안전하게 삭제 가능
파일만 삭제 ❌ 위험 DB에는 적용된 상태가 남아 있어 충돌 발생 가능

Django 마이그레이션을 안전하게 관리하려면 항상 DB 상태와 파일을 함께 관리해야 합니다! 🚀

'기술블로그-Django편' 카테고리의 다른 글

🔐 Django 비밀번호 암호화와 검증 완전 정리  (0) 2025.05.13
🧠 Django ORM 객체 생성과 저장의 차이 완전 정리!  (0) 2025.05.13
💡 SQL 쿼리와 ORM의 차이점 완전 정복!  (0) 2025.05.13
🔐 SHA-256 복호화? 가능한가요?  (0) 2025.05.12
✅ Django 모델 필드 설정: null=True 와 blank=True 차이 완벽 정리  (0) 2025.05.12
'기술블로그-Django편' 카테고리의 다른 글
  • 🔐 Django 비밀번호 암호화와 검증 완전 정리
  • 🧠 Django ORM 객체 생성과 저장의 차이 완전 정리!
  • 💡 SQL 쿼리와 ORM의 차이점 완전 정복!
  • 🔐 SHA-256 복호화? 가능한가요?
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (801) N
      • Python (32)
      • 프로젝트 (115)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    lawsuitculture
    classaction
    hotcoffeecase
    livebroadcast
    btsreunion
    youngprofessionals
    college reunions
    bts
    americaparty
    뷔
    global politics
    life reflection
    homebartrend
    trumpmuskclash
    remittance
    self-growth
    titaniumcase
    gpterror
    travel ban
    newpoliticalparty
    btscomeback
    btsdischarge
    basalcellcarcinoma
    chatgpterror
    btsjungkook
    urbantrends
    RM
    smartphonedurability
    chinanightlife
    americanlaw
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
✅ 특정 마이그레이션으로 되돌리기 (migrate 앱명 마이그레이션번호)
상단으로

티스토리툴바