[django] 테이블 삭제 후 재생성 안될 때
울고 싶어도 꾹 참고 아래를 따라한다..
나의 잘못)
(1) models.py 로 수정 반영을 기대하였으나 반영 되지 않았다.
(2) db에 직접 들어가 문제가 있는 테이블을 지우고 재생성을 하고자 했다
#sqlite3 db.sqlite3
> drop table [test]
(3) models.py 에 재작성 하고 마이그레이션 하였으나 인식되지 않음..
1. migration 파일 삭제해 보기
- 일반적인 migration 파일의 경로 -> ~/[app]/migrations/0001_initial.py
migration의 0001~ 0002~ 숫자로 시작하는 파일을 모두 지운다 (지워도 서비스 이상 없음)
# rm -rf blog/migrations/00*
다시 마이그레이션 시도
# python manage.py makemigrations
# python manage.py migrate
2. fake migrate 해보기
앱 별로 migration 파일 확인
#python manage.py showmigrations
앱의 마이그레이션 파일을아래와 같이 명령하여 초기화한다.
# python manage.py migrate --fake [app이름] zero
3. 특정 테이블의 db만 생성하기
django table already exists 발생할 때 (db에 직접 접근해서 테이블을 삭제한 경우)
# python manage.py makemigrations
로 생성된 migration 파일을 들어가서 생성할 테이블만 남기고 삭제
# python manage.py sqlmigrate blog 0001
사용하고 있던 테이블의 구조를 변경하는 올바른 방법은 무엇인가?
-> 무조건 models.py 수정하고 alter 마이그레이션 적용하는 것이 정석..