django.db.utils.ProgrammingError: (1146, "1146 (42S02): Table '.django_site' doesn't exist", '42S02')

2021. 6. 15. 22:22Trouble Shooting

728x90
django.db.utils.ProgrammingError: (1146, "1146 (42S02): Table '.django_site' doesn't exist", '42S02')

위 에러는 다양한 이유로 인해서 발생할 수 있지만,

저의 경우는 이미 사용중인 데이터베이스에 django로 migration을 하는 행위등을 통해서도 발생하는 것을 확인했습니다.

 

 

이러한 상황일땐 django sites 패키지의 경우는 migrations를 프로젝트 개발 코드내 포함되어 있지 않고 파이썬 패키지에 포함되어 있어서 굳이 삭제할 필요는 없습니다.

 

오류의 발생 원인은 간단합니다.

  1. makemigrations으로 migration 파일을 생성
  2. migrate를 진행할때 django(sites)를 찾는데 해당 테이블이 실물 DB에 존재하지 않음

 

이런 경우에는 직접 테이블을 만들어주는 것도 방법이지만 django 스럽지는 않습니다.

fake를 통해 django_migrations 테이블에서 해제하고, 다시 migrate를 하는 방법이 제일 이상적입니다.

 

 

다음과 같이 직접 해당 app name을 지정해주어야 무한의 오류에 빠지지 않습니다.

python manage.py migrate --fake sites zero
python manage.py showmigrations
python manage.py migrate sites

 

728x90