[Django]makemigrations와 migrate의 차이

김예진·2020년 11월 22일
1

Django

목록 보기
9/10
post-thumbnail
post-custom-banner

1. makemigrations

:models에 적용한 변경 내용을 기반으로 새로운 migrations 파일을 만든다.


2. migrate

: migrations를 적용 및 적용 해제
: 해당 마이그레이션 파일을 DB에 반영!


makemigrations와 migrate의 차이

즉, makimigrations는 장고에서 제공하는 모델의 변경사항들을 감지하고 기록하는 역할을 하고, migrate는 그러한 기록된 파일들과 설정값들을 읽어서 그 변경사항을 db에 저장하는 역할을 한다.


3. sqlmigrate

: 기능을 실행하는 명령어는 아니고, migration을 위한 SQL statements를 보여준다.


4. showmigrations:

project의 migrations list와 상태를 보여준다.

contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
employee
 [X] 0001_initial
notice
 [X] 0001_initial
project
 [X] 0001_initial
schedule
 [X] 0001_initial
sessions
 [X] 0001_initial


tip

  • makemigrations 이후에는 migration 폴더를 확인하는 습관을 갖는게 좋다. DB는 중요하기 때문에 무엇이 수정되었는지 다시 한번 확인하는 습관.
  • makemigrations [app-name] 처럼 app 이름을 명시하는 것이 좋다. (예상치 못한 migration을 방지)
  • showmigrations 를 통해서 적용 상태를 조회할 수 있다. [x] : 적용 후 []: 적용 전
  • 실제 DB에는 sql 쿼리로 명령이 전달이 된다. migration 파일은 쿼리는 아니다. 따라서sqlmigrate 명령을 통해 sql로도 확인하는 습관이 필요하다.
  • 이미 적용한 migration 파일은 절대로 지우면 안된다.
  • 프로젝트/앱 생성 후 처음 migrate 할 때는 app 이름을 명시하지 않는다. 이는 장고 기본 앱에, 여러 앱에 걸쳐서 적용할 migrate가 있기 때문이다.
  • no such table, column 등의 오류는 migration 관련 문제이다.

어라.......나는 이미 적용한 migration 파일을 지웠는데 ....나는 이제 어떻게 되는거지....

profile
Backend Developer 🌱 벨로그 내용을 티스토리로 이사중~!
post-custom-banner

0개의 댓글