오류 및 알고리즘정리본
[Python] django.db.utils.OperationalError: no such table: 오류해결하기
츄98
2023. 6. 8. 10:33
의미: 장고 db 내에 테이블이 존재하지 않아서 발생하는 문제 혹은 똑같은 테이블이 반복 생성되는 문제
해결 방법은 총 3가지가 있다.
1. 아주 단순하지만, makemigrations와 migrate를 하지 않아서 발생할 수 있다.
변동사항이 적용되지 않아서 발생하는 것일 수 있다.
이때에는 makemigrations와 migrate를 통해 해결할 수 있다.
python manage.py makemigrations
python manage.py migrate
2. 첫번째 원인이 아니라면, 앱 안에 migrations 폴더가 없어서일 수 있다.
이런 경우, 두 가지 해결 방법이 있다.
sol1) 직접 migrations 폴더를 만든다.
이때 migrations폴더 안에 __init__.py 파일도 만들어주어야하며, 폴더를 만든 후 makemigrations와 migrate를 하면 된다.
sol2) makemigrations를 할 때 뒤에 앱 이름을 붙여서 수행하면, 알아서 migrations폴더를 만들어준다.
python manage.py makemigrations appname
3. 이렇게까지 했는데도.. 해결이 안된다면 마지막 방법이 있다.
존재해있는 db를 우선 제거하고,
python manage.py makemigrations
python manage.py migrate --run-syncdb
--run-syncdb는 마이그레이션 하지 않고 앱에 대한 테이블을 만드는 것이다.
기존에 존재하는 db에 똑같은 테이블이 반복 생성되는 경우에 이렇게 해결할 수 있다.