Migration
모델(Model)의 변경내역을 관리하고 이 변경내역을 DB에 적용시키는 방법
하나의 Migration 파일은 생성된 시점의 모델의 구조(DB의 스키마)를 갖고 있음
● Migration 생성
$ python manage.py makemigrations [app명]
→ app명 생략시 전체app에 대한 Migration 생성
● Migration 적용
$ python manage.py migrate [app명]
→ app명 생략시 전체app에 대해 Migration 적용
● Migration 적용여부 확인
$ python manage.py showmigrations [app명]
→ [X] 표시된 것이 적용된 Migration
● 적용된 SQL문 확인
$ python manage.py sqlmigrate [app명] [migration명]
● 적용된 Migration 초기화
$ python manage.py migrate --fake [app명] zero
→ 해당 app의 모든 Migration 적용 해제
→ 해당 app의 [X] 표시 제거
● 초기화된 초기 Migration 페이크 적용 (페이크 마이그레이션)
- Migration 초기화 시 초기 마이그레이션인
0001_initial
도 같이 초기화되었기 때문에 테이블이 DB에 이미 존재하여 마이그레이션을 실행할 수 없게 된다. - 초기 마이그레이션을
fake migrate
하여 처리된 것 처럼 할 수 있다.
$ python manage.py migrate --fake-initial [app명]
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0001_initial... FAKED
Applying blog.0002_auto_20190604_0938... OK
→ initial 마이그레이션만 FAKED 처리되고 그 뒤부터 마이그레이션이 이루어진다