OperationalError, no such column

roon2020·2021년 2월 15일
post-thumbnail

Error

어플리케이션의 특정 url로 접근할 때 에러가 발생했습니다.
자세히 살펴보니 table로 정의한 Question과 Choice 중 Choice관련 접근만 오류가 발생했습니다.

check list

아래 사항들을 확인했습니다.

  1. Model(table)을 잘 만들었는지 ( models.py의 클래스 정의 부분)
  2. model을 사이트에 등록했는지 ( admin.py)
  3. url/view 매핑이 잘 이루어졌는지 (각 디렉토리의 urls.py)
  4. view 코드에 문제가 없는지 (views.py의 각 메서드 구현)
  5. template에 문제가 없는지 (앱 이름/templates/앱 이름/template이름.html)

원인

자세히 보니 table 등록 부분에 Choice class의 칼럼명에 오타가 있었습니다.
그런데 수정했는데도 에러가 해결되지 않았습니다.
원인은 DB에 변경이 발생하면 직접 migrate를 해야 서버에 반영이 되기 때문이었습니다.
Django는 [앱 이름]/migrations 디렉토리 아래에 migration 파일들이 존재합니다. 이 파일들은 migrate를 해줘야 생성됩니다. 그리고 이 파일들이 DB 테이블을 models.py에 정의한 클래스를 보고 만들어주는 것입니다.
stackoverflow에서 찾은 답변
DB와 관련없는 코드들의 변경은 즉시 반영이 되서 간과했던 것 같습니다.

해결

migration은 다음 명령으로 수행합니다.

python manage.py makemigrations
python manage.py migrate

실제로 아래와 같이 DB에 변경이 이루어지지 않아서 migration이 이루어졌습니다.

profile
keep in positive mindset

0개의 댓글