본문 바로가기
개발일지/Django

Django - OperationalError at /post/no such table: instagram_post

by 개발에정착하고싶다 2023. 2. 6.

#0 잡설

 

간만에 다시 Django강의로 돌아왔다.

 

그동안 정보처리기사를 듣고 있노라면, 사실상 나의 경우에는 필기는 무용지물이였고

그냥 "집중해서 듣기"가 사실은 최선의 노력이라고 판단해서 그 최선의 노력을 하기 위해서 노력했다.

그러다보니 블로그, 깃도 올릴 기회가 없었는데, 다시금 생각을 전환하게 되었고 "하나 하나씩" 완성되지 않은 것들에 대해서 완성시켜 가보려고 한다.


#1 본론

OperationalError at /post/
no such table: instagram_post

라는 에러가 뜬다.

 

/post/라는 경로를 운영하려고 하는데 에러가 났고

instagram_post라는 테이블을 찾을 수 없다.

고 뜬다.

 

보통 따라만 하시는 분들은 이런 부분도 막히실 것이다.


#2 설명

 

여기서 중요한 정보는 사실 본론이다.

/post/라는 경로에 에러가 생겼다는 것은

내가 프로젝트 단위의 urls.py를 통해서 post라고 설정을 해준 값이든

rest_framework를 통해서 자동 생성된 것이든

어쨌든 저 경로위치에 들어갈 테이블 값이라는 것은 post라는 것이다.

 

여기의 post에서 힌트를 얻어야하고

두번째 힌트는 instagram_post 테이블을 찾을 수 없다는 것이다.

"00 테이블을 찾을 수 없다."고 뜨는 이유는 보통의 경우에는

<앱단위이름>_<앱단위에 귀속된 모델에 정의된 모델>

로 이해 하면 된다.


즉, 나의 경우에는 instagram이라는 이름의 앱에

Post라고 정의된 클래스 혹은

post라고 정의된 함수가 있어야 함을 체크하는 것이 첫번째다.


두번째로는 이미 정의되어있음을 확인했다면,

분명 migration이 안되었을 확률이 매우 크다.

따라서 migration을 해준다.


python manage.py makemigrations <모델이귀속되어있는앱이름>

을 통해서 migration을 할 자료를 생성해주고

python manage.py migrate <방금makemigrations한모델이 속해있는앱이름>

을 통해서 만들어진 자료를 적용해주자.

 

그러면 화면이 잘 나올것이고, 운영해야하는 urls 체킹하는 시스템은

방금 해준 테이블을 찾을 수 있을것이다.