⚙️ 오류 해결 모음집

🐛 마이페이지 기능 구현 중 겪은 오류 해결 모음

code.with.siyeon 2025. 5. 25. 19:51

✅ 구현 기능 요약

  • GET /api/users/mypage/ : 사용자 정보 조회
  • PUT /api/users/mypage/ : 닉네임, 자기소개, 프로필 이미지 수정
  • 인증 필요(JWT 기반)
 
# views.py
class MyPageView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request):
        serializer = UserDetailSerializer(request.user)
        return Response(serializer.data)

    def put(self, request):
        serializer = UserUpdateSerializer(request.user, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response({'message': '정보가 수정되었습니다.'})
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

🐛 1. 오류: django.db.utils.ProgrammingError: Table 'bees_db.users_user' doesn't exist

📌 상황

  • 회원가입도 잘 되고 로그인도 되는데 마이페이지 요청 시 위 오류 발생

🧾 로그 일부

ProgrammingError: (1146, "Table 'bees_db.users_user' doesn't exist")

🔍 원인

  • makemigrations 후 migrate를 제대로 하지 않아 테이블이 생성되지 않음
  • 혹은 docker-compose로 MySQL 컨테이너를 올렸지만, Django에서 연결 시점에 DB가 준비되지 않아서 발생

✅ 해결 방법

  1. docker-compose exec web bash
  2. python manage.py migrate 로 수동 마이그레이션
  3. 또는 docker-compose up --build 전에 depends_on 설정 확인

🐛 2. 오류: RuntimeError: 'cryptography' package is required

📌 상황

  • 로그인은 잘 되는데, 로그인 직후 마이페이지 접근 시 발생

🧾 로그 일부

RuntimeError: 'cryptography' package is required for sha256_password

🔍 원인

  • pymysql이 MySQL 8.0의 caching_sha2_password 방식으로 접속하려고 할 때 cryptography 미설치

✅ 해결 방법

  • requirements.txt에 cryptography 추가
  • Dockerfile에서 패키지 설치하도록 수정 후 rebuild
RUN pip install --no-cache-dir cryptography

🐛 3. 오류: 마이페이지에서 PUT 요청 후 변경 내용 반영이 안 됨

📌 상황

  • 닉네임이나 자기소개를 수정했는데, 새로고침하면 원래대로 돌아감

🔍 원인

  • UserUpdateSerializer에 fields가 명시되지 않았거나, update() 메서드를 오버라이딩하지 않음

✅ 해결 방법

  • UserUpdateSerializer를 아래처럼 수정
class UserUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['nickname', 'introduction', 'profile_image']

✨ 느낀 점

마이페이지처럼 사소해 보이는 기능도 인증 흐름, 마이그레이션, 시리얼라이저, DB 연결 등 많은 요소가 연결되어 있었다. 특히 Docker 환경에서는 DB 준비 상태나 컨테이너 간 의존성에서 예기치 않은 문제가 쉽게 발생할 수 있다는 걸 체감했다.

이번 오류 해결을 통해:

  • migrate를 게을리하면 큰일 난다는 교훈 📌
  • requirements.txt와 Dockerfile은 항상 함께 관리해야 함 🔧
  • 오류가 발생해도 로그를 잘 읽고 차근차근 디버깅하면 해결할 수 있다는 자신감 💪