코드 위의 하루 (A Day on the Code)

🧨로그인 기능 구현 중 오류 해결 모음집 (JWT + Django + Docker) 본문

⚙️ 오류 해결 모음집

🧨로그인 기능 구현 중 오류 해결 모음집 (JWT + Django + Docker)

code.with.siyeon 2025. 5. 17. 23:06

Docverse 프로젝트에서 이메일 기반 JWT 로그인 기능을 구현하면서 수많은 오류와 마주했다. 이 글은 그 과정을 정리한 오류 해결 모음집으로, 나와 같은 환경에서 개발하는 사람들에게 도움이 되기를 바라는 마음으로 작성한다.


✅ 구현 목표

  • 사용자 정의 User 모델 기반 회원가입 구현
  • 이메일 기반 JWT 로그인 구현
  • Django + MySQL + Docker 환경에서 마이그레이션까지 정상 동작 확인

🔥 겪었던 주요 오류들과 해결 과정

1. PyMySQLcryptography 오류

Could not find a version that satisfies the requirement PyMySQLcryptography
  • 원인: requirements.txt에 오타로 인해 존재하지 않는 패키지 PyMySQLcryptography가 추가되어 있었음.
  • 해결:
sed -i "/PyMySQLcryptography/d" requirements.txt

2. cryptography 모듈 누락 오류

RuntimeError: 'cryptography' package is required for sha256_password
  • 원인: MySQL에서 caching_sha2_password 인증 방식 사용 시 cryptography 모듈 필요.
  • 해결:
echo "cryptography" >> requirements.txt

3. docker build 실패 - .sock 파일 포함

failed to checksum file db/mysql.sock
  • 원인: build context에 MySQL의 .sock 파일이 포함되어 있음.
  • 해결:
rm -rf db/
docker volume prune -f

4. 마이그레이션 중 참조 테이블 누락 오류

OperationalError: Failed to open the referenced table 'users_user'
  • 원인: users_user 테이블이 존재하지 않는데 admin 앱에서 해당 테이블을 참조함.
  • 해결:

1. users 앱 마이그레이션 먼저 생성

docker-compose exec web python manage.py makemigrations users

2.그 다음 migrate 실행


5. django_admin_log 테이블 중복 오류

OperationalError: (1050, "Table 'django_admin_log' already exists")
  • 원인: 수동 삭제 없이 마이그레이션을 반복해 테이블이 중복 생성됨.
  • 해결:
DROP TABLE django_admin_log;
DELETE FROM django_migrations WHERE app='admin';

6. 인증 오류 - 로그인 실패

{"detail": "유효하지 않은 이메일 또는 비밀번호입니다."}
  • 원인: DB에 가입된 사용자가 존재하지 않음.
  • 해결:
    • 회원가입 API(/api/users/signup/)를 먼저 실행하여 사용자 등록
    • 이후 JWT 로그인(/api/auth/login/) 정상 동작 확인

✨ 느낀 점

  • "로그인 기능 하나에 이렇게 많은 오류가 생길 줄 몰랐다."
  • Docker + Django + JWT를 조합해서 처음으로 직접 구현하며 얻은 최대 교훈은 **“순서가 중요하다”**는 것이다.
  • 특히 User 모델 마이그레이션 순서, DB 상태 확인, 컨테이너 상태 재점검 등 "지금 어디가 문제인지 끊임없이 의심하고 시도해보는 태도"가 정말 중요했다.
  • 처음엔 무서웠던 오류 메시지들이 이제는 조금씩 익숙해지고 있다. 🧠

🧾 정리

문제 원인 해결 방법
패키지 설치 오류 오타 requirements.txt 수정
인증 모듈 오류 cryptography 누락 패키지 추가
docker build 실패 .sock 포함 db 디렉토리 정리
참조 테이블 없음 마이그레이션 순서 users 먼저 migrate
테이블 중복 오류 중복 마이그레이션 DB에서 DROP
로그인 실패 회원가입 누락 사용자 등록 먼저
 

단단히 삽질한 만큼, 다음에 같은 기능을 구현할 땐 더 빠르고 정확하게 해낼 수 있을 거라 믿는다.