"Life is Full of Possibilities" - Soul, 2020

IT (프론트엔드 외)

[Django] Migration

m2ndy 2023. 4. 15. 19:10

 

 

장고에서의 Migration

: 모델을 db에 저장하는 것

모델에서의 변경사항이 생겼을 경우 새롭게 migration을 진행해 주어야 한다.

 

명령어 (SQLite) :

python manage.py makemigrations [app_name]

- app_name에 대해 마이그레이션을 진행

- app_name을 작성하지 않으면 전체 app에 대해 마이그레이션 진행

- 프로젝트 생성 이후 첫 번째 마이그레이션은 app_name을 작성하지 않고 전체 마이그레이션을 해야 함

 

 

python manage.py migrate [app_name] [migration_name]

- 모델의 변경사항을 DB에 반영하는 단계

- app_name에 대한 DB를 반영 (생략 가능)

- migration_name : 해당 버전의 마이그레이션을 반영 (생략 가능)

- 이전 버전의 마이그레이션으로도 되돌리기 가능

- 모든 마이그레이션을 되돌리려면 migration_name에 zero를 입력하기

python manage.py migrate [app_name] zero

 

 

 

 

python manage.py showmigrations [app_name]

- app_name의 마이그레이션 정보를 보여줌 (app_name 생략 가능)

- 마이그레이션이 적용되었는지 보여줌

 

 

모델을 추가하거나 변경하는 경우 매번 migration을 해야 하지만,

기존의 데이터와 충돌하여 에러가 발생할 수 있다.

> DB에 저장된 데이터를 모두 날려도 된다면 .sqlite3 파일과 migrations 폴더 내 0001와 같이 숫자로 시작하는 파일들을 모두 제거한 뒤 새롭게 makemigrations부터 진행하면 좋다

> 연습할 때만 데이터 삭제하기,, 

 

 

 

 

 

 

참고

https://docs.djangoproject.com/en/4.2/topics/migrations/

https://tibetsandfox.tistory.com/24