Django ORM 사용 중 종종 꼬이는 듯하여 초기화, 재설정 하는 법을 찾아보았다.
1. 신규 프로젝트 (오픈 전의 프로젝트)
최초 배포을 하지 않았다면 배포 전 정리를 해주는게 관리에 편하다.
(DB 생성 조차 되지 않았을 경우)
- 리눅스에서 해당 파일 삭제
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
- 초기 마이그레이션 파일 생성, DB 스키마 생성
python manage.py makemigrations
python manage.py migrate
2. 운영 프로젝트 (운영중인 프로젝트)
DB 스키마는 유지하고, 마이그레이션 파일만 삭제
python manage.py makemigrations (마이그레이션)
python manage.py showmigrations (히스토리 확인)
python manage.py migrate --fake [app.name] zero (초기화)
물리적 마이그레이션 파일 삭제
python manage.py makemigrations (마이그레이션)
python manage.py migrate --fake (DB스키마 변경 없이 마이그레이션 적용)
다른 이야기이긴 하지만 운영중인 프로젝트일 경우 이미 DB 스키마가 생성 되어있을 것이다.
이것을 생각하지 않고 마이그레이션을 초기화 후 migrate를 진행 할 경우 오류가 발생한다.
(테이블은 이미 존재하는데 다시 생성하려 하기 때문에...)
테이블에 데이터가 없다면 테이블을 삭제하거나, 마이그레이션 파일에서 해당 구문을 삭제 해주는 것으로 해결 가능하다.