Skip to content

Latest commit

 

History

History
24 lines (14 loc) · 1.77 KB

_-_-_-_-_-_-_-_.md

File metadata and controls

24 lines (14 loc) · 1.77 KB

장고 테이블 지우고 난 후 다시 마이그레이션 하는 방법!

장고에서 DB table이 꼬이면, ㄹㅇ 개노답인 상황이 생긴다. 특히, 어디서부터 table이 생긴건지, 어디서부터 없는건지 파악할 수 없기때문에 진짜 말그대로 sqlite3에 직접들어가서 확인해보는 것과 같은 방식으로 찾는 것도 있다.

그리고 장고 자체 버그인지 아니면 내가 장고에 대한 이해도가 떨어지는지는 모르겠는데 modeling을 바꾸고 난다음 python manage.py makemigrations 과 python manage.py migrate 후에 modeling이 재대로 적용되지 않는 이상한 버그가 있는 듯하다.

특히, migration을 날리고 난다음에 table은 있는 경우 오히려 테이블은 이전 모델이라 재대로 key가 적용이 안되는 이상한... 별의 별 상황을 다 겪었다.

즉, 요약해보자면

  • modeling이 변경되면 migration이 잘 변경됨
  • 하지만 가끔 migration을 그냥 물리적으로 파일을 없에버리면, makemigrations 혹은 migrate을 통해서 직접 테이블이 변경되지 않는 이상한 버그가 있다.
  • 또 거기에 직접 SQLite3에 들어가서 테이블을 삭제하고 다시 migrate작업을 해도 다시 테이블이 생성되지 않아서 난감.

이런 버그를 해결하는 방법은 다음과 같다.

  1. 해당 앱에 있는 migrations 폴더안의 init.py 파일을 제외하고 모두 삭제하기!
  2. database에 직접 접속하여 테이블 중 django_migrations 라는 테이블에서 해당 앱에 대한 raw를 삭제.

DELETE FROM django_migrations WHERE app = '앱 이름'

  1. python3 manage.py makemigrations // python3 manage.py migrate 수행 하면 해결

참고: https://forybm.tistory.com/2