Django - makemigrations 취소하는 방법

|

개인적인 연습 내용을 정리한 글입니다.
더 좋은 방법이 있거나, 잘못된 부분이 있으면 편하게 의견 주세요. :)


장고를 만지다보면 자연스럽게 마이그레이션을 실수하는 경우가 생긴다.

이러한 경우에 할 수 있는 migrations을 지우고 해제하는 방법에 대해 정리해본다.

데이터베이스가 이상하면 이전 상태로 돌아간 다음에 migrations을 지워야 한다.

shell에 들어가서 ~/manage.py showmigrations

abstract_base_classes
 [X] 0001_initial
 [X] 0002_auto_20180619_0536

이런식으로 나올 것이다.

우리가 현재 migrations한 상황들을 볼 수 있고, migrate를 통해서 현재 상태를 어디로 돌아갈 것인지를 정할 수 있다.

우리가 현재 abstract_base_classes의 0001번으로 돌아가고 싶다면,

~/manage.py migrate abstract_base_classes 0001

Operations to perform:
  Target specific migration: 0001_initial, from abstract_base_classes
Running migrations:
  Rending model stated... DONE
  Unapplying abstract_base_classes.00020002_auto_20180619_0536...OK

적용이 해지가 된 것을 볼 수 있다.

그러고 다시 ~/manage.py showmigrations을 해보면

abstract_base_classes
 [X] 0001_initial
 [ ] 0002_auto_20180619_0536

그리고 이러한 상태에서는 파이참 migrations 폴더에 있는 파일을 직접 delete할 수 있다.

데이터베이스가 이상하다고 해서 migrations에 있는 파일을 지우면 안되는 이유가 여기에 있다.

만약 0001의 migrations을 취소하고 싶다면 zero를 해주면 된다.

./manage.py migrate <취소하고자 하는 앱 이름> zero