Django migration 취소 제거 방법

Django migration 취소 제거 방법
Photo by Markus Winkler / Unsplash

그냥 migrations 폴더에서 스크립트 파일들을 막 지우면 문제가 생긴다. 다음 순서대로 차분하게 정리해 보자.

참고로 장고에서 migration 이란?

from https://tibetsandfox.tistory.com/24
> DB 스키마를 git처럼 버전으로 나눠서 관리 할 수 있게 해 주는 시스템

Show me the migrations

먼저 migrations history 를 보자

python manage.py showmigrations

그럼 다음 화면처럼 지금까지 한 역사가 나타난다.

앱이름과 적용한 migrations 내용이 나타난다.

특정 위치로 돌아가기

여기서 돌아가고 싶은 곳으로 취소하고 싶다면, (이미 적용된 것을 취소하고 싶다면) 아래 커맨드를 참고한다. 즉, testapp의 0001번으로 돌아가고 싶다면,

python manage.py migrate testapp 0001

아예 0001 까지 없애고 싶다면, 돌아갈 곳이 없는데 어떻게 하느냐?

python manage.py migrate testapp zero
OR
python manage.py migrate --fake testapp zero

삭제하기

migrations 폴더로 가서 원하는 파일을 순서대로 지우면 된다. 의존성이 있으니깐 뒤에서 원하는 지점까지는 전부 지워서 없애는게 나을 듯,

😊
__init__.py 파일을 안 지우는게 좋을 듯 합니다. DB를 다 날릴 거 아니라면

from https://tibetsandfox.tistory.com/24

이 때 0002 마이그레이션 파일을 삭제하고 싶다면,
1. python manage.py migrate app_name 0001 명령어로 이전 버전으로 적용시킨후 삭제
2. python manage.py migrate app_name zero 명령어로 마이그레이션을 초기화 시킨 수 삭제
둘 중 하나의 절차를 거친 후 삭제하서야 합니다.

초기화

DB에는 스키마가 남아 있으니 혹시 재 초기화 하고 싶다면 fake-initial 을 ...

python manage.py migrate --fake-initial

관련된 내용은 여기 참고 (https://velog.io/@kho5420/Django-Django-마이그레이션-초기화)

참고 페이지

훨씬 자세한 내용 😁 못이겨 못이겨

  • 좀 방대하지만 교과서 같은 사이트
05) 마이그레이션 파일 제거
[TOC] # 마이그레이션 파일 제거 Django 마이그레이션 도구는 모델 관리에 훌륭한 도구이다 그러나 너무 많이 저장소에서 관리하는 것이 때로는 불필요한 문제나 부작용 ...
  • 딱 필요한 것만 요점 정리
Django - makemigrations 취소하는 방법 · 지혜의 개발공부로그
  • migrations 에 대한 전반적인 내용
장고(Django) - 마이그레이션(Migration)
마이그레이션(Migration)이란? 장고 공식 문서에서는 마이그레이션이 모델의 변경 내역을 DB *스키마에 적용시키는 장고의 방법이라고 설명하고 있습니다. 장고는 ORM을 사용하기 때문에 models.py와 클래스를 통..