django migrate 초기화 - 1

dingdong·2022년 1월 22일
0

django migrate

목록 보기
1/2
post-custom-banner

마이그레이션 파일은 모두 지우지만 데이터베이스 데이터는 유지하고 싶은 경우 사용하는 방법이다.

1) python manage.py showmigrations <앱 이름>

현재 migrations 내역을 확인합니다.
0001_initial, 0002_post_author 에 [x] 가 되어있다. (migrate 적용된 상태)
(venv) root@km-VirtualBox:~/django-with-react-study# python manage.py showmigrations blog1
blog1
 [X] 0001_initial
 [X] 0002_post_author
(venv) root@km-VirtualBox:~/django-with-react-study#

1) python manage.py showmigrations <앱 이름>

  • 현재 migrations 내역을 확인합니다.
  • 0001_initial, 0002_post_author 에 [x] 가 되어있다. (migrate 적용된 상태)
(venv) root@km-VirtualBox:~/django-with-react-study# python manage.py showmigrations blog1
blog1
 [X] 0001_initial
 [X] 0002_post_author
(venv) root@km-VirtualBox:~/django-with-react-study#

2) 마이그레이션 히스토리 삭제

  • zero 는 migrations 처음 상태로 돌아감.
    - __init__.py 까지 돌아감.
    - __init__.py 은 남아있어야됨.
    - .pyc 파일도 삭제할 것
    - 0001_initial, 0002_post_author 에 [ ] 로 되어있어야된다.

    python manage.py migrate --fake <앱 이름> zero


(venv) root@km-VirtualBox:~/django-with-react-study# python manage.py migrate --fake blog1 zero
Operations to perform:
  Unapply all migrations: blog1
Running migrations:
  Rendering model states... DONE
  Unapplying blog1.0002_post_author... FAKED
  Unapplying blog1.0001_initial... FAKED
(venv) root@km-VirtualBox:~/django-with-react-study# python manage.py showmigrations blog1
blog1
 [ ] 0001_initial
 [ ] 0002_post_author
(venv) root@km-VirtualBox:~/django-with-react-study#

3) 초기화 경우: __init__.py만 남기고 나머지 파일들을 다 지우기

  • migrations 폴더에 __init__.py 를 제외하고 다 삭제
rm blog1/migrations/0001_initial.py

rm blog1/migrations/0002_post_author.py

4) python manage.py makemigrations <앱 이름>

  • 초기 마이그레이션 파일 생성

(venv) root@km-VirtualBox:~/django-with-react-study# python manage.py makemigrations blog1
Migrations for 'blog1':
  blog1/migrations/0001_initial.py
    - Create model Post

5) 페이크 마이그레이션

  • 데이터베이스 테이블이 이미 존재하기 때문에 초기 마이그레이션 파일을 적용할 수 없다.
    따라서 마치 마이그레이션을 한 것처럼 아래와 같이 명령하여 페이크 마이그레이션한다.
  • --fake 는 현재 마이그레이션 적용 상태를 변경
  • --fake-initial 는 첫 마이그레이션을 페이크
python manage.py migrate --fake-initial


참고

profile
자동화 개발
post-custom-banner

0개의 댓글