[Django] 어느날 갑자기 Django Admin에 접속되지 않는다면..?

golony·2022년 12월 13일
0

개발

목록 보기
19/23
post-thumbnail

어느날 갑자기 관리자페이지가 접속되지 않는다면..?

살려줘

현생이 바빠서 한동안 신경쓰지 못했던 웹서비스가 있었다. 이직 후 여유가 생겨서 이러서 개발하려고 했으나, Django Admin접속에서 부터 막힐것이라고는 생각하지 못했다.

먼저 해당 웹서비스의 구성 스택을 소개하자면 아래와 같다.

  • ECS
  • Django
  • AuroraDB (w/ MySQL)

원인

저장된 레코드의 Timezone과 Django 설정간 미스매칭

  • 알게 된 점: Naive한 객체와, aware한 객체는 DB에 저장될 때 다른 형식으로 저장된다.

문제의 원인은 DB에 시간관련 필드가 들어있는 레코드가 존재하고 있었고 모종이 이유로 시간대 관련 설정이 변경되었다. Timezone 정보가 없는 데이터(aware)를 Timezone 정보가 있는 데이터(naive) 형식으로 읽으려다 보니 문제가 발생했다.

Python의 일자/시간과 관련된 패키지들에서 naiveaware라는 단어가 매우 자주 등장한다.

  • naive: Timezone정보가 지정된 시간정보
  • aware: Timezone정보가 지정되지 않은 시간정보

두 성격 자체는 이전에 많은 삽질(...)을 통해서 어느정도 알고 있었지만, DB저장

MySQL 버전업으로 인한 문자셋 관련 설정변경

아무래도 Managed 서비스이다 보니, 내부적으로 MySQL버전업이 진행되었던 것 같다.
DB의 문자셋 설정(latin)와 Django의 기본값 (utf8mb4) 사이에 차이가 발생했고, 이에 따라 아래와 같은 오류가 발생했다.

이에 대해 찾아보고 해결 한 솔루션은 아래와 같다.

profile
더 나은 세상으로 나아가는 서비스를 만들고 싶습니다.

0개의 댓글