[django] migrations 가 안되는 이유?

뚜니어리·2023년 9월 17일
0
post-thumbnail

📍 ERROR

✏️ 상황 설명

프로젝트를 하는 중에 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? 안될까 ???

일단 예상 할 수 있는 부분..

  1. db를 nosql(mongodb)에서 rdbms(일단 sqlite / 추후 변경 예정)로 변경해서 그런가?

-> migrations 파일과 sqlite를 모두 지우고 다시 해봤지만?
-> 안됨

  1. 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

하면 된다고 한다..

암튼 해결 완료...!!!

profile
삽질과 저장소의 그 중간

0개의 댓글