마이그레이션 파일
- Django의 마이그레이션 도구는 모델 관리하는데 있어 편리함
- Django의 마이그레이션 파일은 모델 관리하는 정보와 마이그레이션 정보를 갖고 데이터베이스와 연결 시 동기화하는 작업을 함
- 그러나 너무 많은 저장소에서 관리하는 것을 불필요하거나 문제를 야기 시킴
Migrate 전체 초기화
1. 마이그레이션 파일 삭제
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
- Django 앱의
migrations
디렉토리의 __init__.py
모듈을 빼고 삭제
2. showmigrations
> python manage.py showmigrations
admin
[ ] 0001_initial
auth
[ ] 0001_initial
blog
[ ] 0001_initial
contenttypes
[ ] 0001_initial
sessions
[ ] 0001_initial
- 위 명령어를 통해 프로젝트 내 앱들의 마이그레이션이 초기화 되었는지 확인
3. migrate
> python manage.py migrate
- 위 명령을 통해 초기
migrate
작업을 한다
Migrate 일부 초기화
1. 마이그레이션 확인
> python manage.py makemigrations
No changes detected
- 위 명령을 통해 프로젝트에 추가로 반영할 마이그레이션이 있는지 확인
- 반영할 마이그레이션 파일이 없을 시
No changes detected
2. show migrations
> python manage.py showmigrations
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
blog
[X] 0001_initial
[X] 0002_auto_20170610_1904
[X] 0003_auto_20170610_1906
[X] 0004_auto_20170610_2044
[X] 0005_auto_20170613_1152
[X] 0006_post_description
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
sessions
[X] 0001_initial
- 위 명령을 통해 프로젝트 안에 앱들의 마이그레이션 히스토리를 확인
3. fake migrate & show migations
> python manage.py migrate --fake blog zero
Operations to perform:
Unapply all migrations: blog
Running migrations:
Rendering model states... DONE
Unapplying blog.0006_post_description... FAKED
Unapplying blog.0005_auto_20170613_1152... FAKED
Unapplying blog.0004_auto_20170610_2044... FAKED
Unapplying blog.0003_auto_20170610_1906... FAKED
Unapplying blog.0002_auto_20170610_1904... FAKED
Unapplying blog.0001_initial... FAKED
- 위 명령을 통해
blog
앱만 migrate를 zero
즉 초기화시킨다
> python manage.py showmigrations
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
blog
[ ] 0001_initial
[ ] 0002_auto_20170610_1904
[ ] 0003_auto_20170610_1906
[ ] 0004_auto_20170610_2044
[ ] 0005_auto_20170613_1152
[ ] 0006_post_description
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
sessions
[X] 0001_initial
- 다시
showmigations
를 확인한 결과 blog
앱의 migrate 기록만 초기화 됨
4. 마이그레이션 파일 삭제
> cd blog
> find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
> find . -path "*/migrations/*.pyc" -delete
- blog앱의 디렉토리로 이동
- Django 앱의
migrations
디렉토리의 __init__.py
모듈을 빼고 삭제
5. make migrations
> python manage.py makemigrations
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model Post
blog
앱의 최초 마이그레이션 파일 0001_inital.py
이 생성됨
migrate
> python manage.py migrate
- 위 명령을 통해 초기
migrate
작업을 한다
감사합니다!