Django 테이블 지우고 난 후 다시 마이그레이션 하는 방법!
Web framework에서 DB는 아주 큰 중요한 요소이다. 최근 Web Framework의 추세상 ORM을 적용하는 많은 프레임워크가 많은데요. 그러다보니까 내가 프로그래밍을 하고 SQL문을 장고에서 자동으로 ORM을 통해 생성되게 된다.
물론, 내가 생각한대로 table이 잘 생성되면 좋겠지만.. 예상치 못한 상황으로 table을 바꿔야하거나, 혹은 table 자체를 다시 설계해야하는 상황이 생겼다.
출처: (http://www.analyticaweb.com/desarrollo-web/aprende-ya-que-es-un-orm)
그리고 장고에서 DB table이 꼬이면, 어디서부터 table이 생긴건지, 어디서부터 없는건지 파악할 수 없기때문에 진짜 말그대로 sqlite3에 직접들어가서 확인해보는 것과 같은 방식으로 찾는 것도 있다.
내가 장고에 대한 이해도가 그리 높지 않아서, 특히 modeling을 바꾸고 난 다음 python manage.py makemigrations 과 python manage.py migrate 후에 modeling이 재대로 적용되지 않는 이상한 버그가 있는 듯하다.
특히, migration을 날리고 난다음에 table은 있는 경우 오히려 테이블은 이전 모델이라 재대로 key가 적용이 안되는 이상한... 별의 별 상황을 다 겪었다.
내가 겪었던 별의별 이상한 문제들...;;;
- modeling이 변경되면 migration이 잘 변경됨
- 하지만 가끔 migration을 그냥 물리적으로 파일을 없에버리면, makemigrations 혹은 migrate을 통해서 직접 테이블이 변경되지 않는 이상한 버그가 있다.
- 또 거기에 직접 SQLite3에 들어가서 테이블을 삭제하고 다시 migrate작업을 해도 다시 테이블이 생성되지 않아서 난감.
이런 버그를 해결하는 방법은 다음과 같다.
-
해당 앱에 있는 migrations 폴더안의 init.py 파일을 제외하고 모두 삭제하기!
-
database에 직접 접속하여 테이블 중 django_migrations 라는 테이블에서 해당 앱에 대한 raw를 삭제.
DELETE FROM django_migrations WHERE app = '앱 이름'
- python3 manage.py makemigrations // python3 manage.py migrate 수행 하면 해결
참고: https://forybm.tistory.com/2
'Python > Django' 카테고리의 다른 글
AWS Linux에서 FFMPEG 설치하기 (ElasticBeanStalk) (0) | 2020.07.31 |
---|---|
특정 확장자만 파일 업로드 가능하게 만들기 (mp3) (0) | 2020.07.26 |
git에 가져온 Django가 pycharm에서 서버실행이 되지 않을때 (0) | 2020.07.24 |
장고 URL html 템플릿 URL 설정시 참고사항 (0) | 2020.07.24 |
Django에서 파일 업로드 구현시 파일이 안올라갈때.. (0) | 2020.07.24 |