프로젝트를 하는 중에 pull을 받은 후에 migrations 을 하는 상황이였다.
python manage.py makemigrations
을 하면
No changes detected
가 나오는 상황...
분명 변경되는 모델이 있는데.. 왜 migration이 안되는지 이해 불가..
암튼 그래서 migrate도 해보았는데
와중에 python manage.py migrate
는 평소처럼 되는 상황..
python manage.py makemigrations
를 하면 할 게 없다고 나오는데...
python manage.py showmigrations
로 확인을 하면
마이그레이션이 정작 안 되어 있는 상황을 발견할 수 있다...
아직 개발 초기단계라 db를 지워도 되는 상황이라 모든 데이터를 지우고 migrations 파일을 지우고 다시 해도 계속 똑같은 에러 발생...
settings에도 앱이 모두 등록 되어 있는데...
왜? why? 안될까 ???
일단 예상 할 수 있는 부분..
- db를 nosql(mongodb)에서 rdbms(일단 sqlite / 추후 변경 예정)로 변경해서 그런가?
-> migrations 파일과 sqlite를 모두 지우고 다시 해봤지만?
-> 안됨
- pull 을 잘못 받았나?
-> git pull을 다시 받았는데도 안됨
-> git clone 으로도 시도해보았지만? 역시나 안됨
python manage.py makemigrations app_name
app_name에다가 정말 app이름(폴더명)을 넣으면 된다.
예를 들면
python manage.py makemigrations users
python manage.py makemigrations auctions
그럼 분명 안되던게? 일일히 migration이 된다!!!
앱 별로 일일히 해주면 하나씩 강제로? migration이 되는 걸 볼 수 있다..
이 때 주의할 점은 migrate 하기 전에!!!
무조건 모든 앱을 일일히 makemigrations 해준 후, migrate를 해주어야한다.
migrate를 먼저하면 의존성이 꼬이기때문에 또 머리가 아픈 이슈가 생긴다...
어떻게 알았냐구요?
저도 알고 싶지 않았어요... 다행히 db를 날려도 되는 상황이여서 머리가 반만 아팠습니다...
그럼 지금처럼 데이터가 없으면 다 지우고 하면 되지만?
데이터가 있는 경우에는? ...
python manage.py migrate --fake app_name zero
python manage.py migrate --fake users zero
하면 된다고 한다..
암튼 해결 완료...!!!