[Django] Migrate 초기화

황인용·2020년 8월 17일
3

Django

목록 보기
7/13
post-custom-banner

마이그레이션 파일

  • 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 작업을 한다
profile
dev_pang의 pang.log
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 8월 11일

감사합니다!

답글 달기