오류 및 알고리즘정리본

[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에 똑같은 테이블이 반복 생성되는 경우에 이렇게 해결할 수 있다.