- Published on
Django 마이그레이션을 이전 버전으로 되돌리는 방법
- Authors
- Name
- hongreat
- ✉️hongreat95@gmail.com
Django를 사용하다 보면 실수로 마이그레이션을 잘못 적용하거나, 이전 상태로 되돌리고 싶은 상황이 생깁니다. 이번 글에서는 Django 마이그레이션 파일을 이전 버전으로 되돌리는 방법을 기록합니다.
먼저, 현재 적용된 마이그레이션 상태를 확인하는 것으로 시작하겠습니다.
1. 현재 마이그레이션 상태 확인하기
현재 적용된 마이그레이션 목록을 확인하려면 다음 명령어를 사용합니다.
python manage.py showmigrations <app_name>
예를 들어, myapp 앱의 마이그레이션을 확인해보면 다음과 같은 결과가 나옵니다. myapp [X] 0001_initial [X] 0002_add_user_age [X] 0003_remove_user_age
2. 특정 마이그레이션 버전으로 되돌리기
원하는 특정 마이그레이션 버전으로 되돌리는 방법입니다.
예를 들어, 현재 0003_remove_user_age까지 적용된 상태라고 합시다. 만약 0001_initial 가 적용된 상태로 되돌리려면 다음 명령어를 사용합니다.
python manage.py migrate myapp 0001_initial
이 명령을 실행하면 다음 작업이 일어납니다. • 0002_add_user_age와 0003_remove_user_age 마이그레이션이 취소됩니다. • 데이터베이스 상태는 0001_initial 마이그레이션까지만 적용된 상태로 복구됩니다.
기존 마이그레이션 파일을 삭제하지는 않습니다. 다만, 적용 상태만 조정합니다. 그렇기 때문에 아직 배포하기 전이라면, CICD나 배포되어있는 서버에 마이그레이션 되지 않도록 마이그레이션 파일을 삭제하는 것도 생각해야합니다.
- 마이그레이션을 완전히 초기화하기 (zero)
해당 앱의 모든 마이그레이션을 완전히 취소하고, 초기 상태로 돌아가고 싶다면 다음과 같이 명령어를 사용합니다.
python manage.py migrate myapp zero
Django 마이그레이션은 프로젝트의 데이터베이스 상태를 관리하는 중요한 기능입니다. DB의 테이블을 보다보면 Django 기본 세팅으로 생성된 테이블과 컬럼들을 살펴보는 것이 Django 프로젝트를 이해하는데 매우 도움이 되는 것 같습니다.
이 명령어를 실행하면 해당 앱의 모든 마이그레이션이 취소되며, 데이터베이스에서 해당 앱과 관련된 테이블들도 모두 삭제됩니다. 따라서 신중하게 결정해야 합니다.