220907-08 오답노트

백승한·2022년 9월 8일
0

문제

서비스 런칭 준비를 하면서 DB 설정을 H2에서 MySQL로 변경하니까
테이블이 생성이 안되던 문제

원인

text타입이 존재하지않던 H2애서 varchar 타입은 60000만자까지 해결주지만, MySQL의 경우 16000대까지만 허용해준다.

해결

수정 전

@Column(nullable = false, length = 60000)
private String content;

수정 후

@Column(nullable = false, columnDefinition = "TEXT")
private String content;

JPA에서 스트링 컬럼의 VARCHAR 255 제한 해제하기
간단한 문제였지만, 터미널에서 보여주는 error메시지 형식이 달라서 해결하는데 꽤나 시간이 걸렸다. 앞으로 더 차근하게 볼 필요가 있다.

문제

exception processing errorpage errorcode=0 location=/error
NoSuchElementException("올바른 JWT 정보가 아닙니다."

원인 및 해결- JwtAuthFilter

수정 전

String accessToken = extractor.extract(tokenPayload, request);
        if (jwtDecoder.isExpiredToken(accessToken)) {
            // 어떤 요청이 들어왔을 때, 여기에 보내라? 인터샙터 - 프론트
            // 같은 401인데 3번째 인자 메시지가 있으면 리프레쉬 해라
            responseMessage(response, objectMapper, "만료된 토큰입니다."); // 만료 신호
        }

        JwtPreProcessingToken jwtToken = new JwtPreProcessingToken(
                extractor.extract(tokenPayload, request));

수정 후

String accessToken = extractor.extract(tokenPayload, request);
        if (jwtDecoder.isExpiredToken(accessToken)) {
            // 어떤 요청이 들어왔을 때, 여기에 보내라? 인터샙터 - 프론트
            // 같은 401인데 3번째 인자 메시지가 있으면 리프레쉬 해라
            responseMessage(response, objectMapper, "만료된 토큰입니다."); // 만료 신호
        }

        JwtPreProcessingToken jwtToken = new JwtPreProcessingToken(
//                extractor.extract(tokenPayload, request));
                accessToken);

HeaderTokenExtractord의 extractor가 연속으로 되는 걸 보고 수정을 했더니 감쪽같이 사라졌다

뭔가 깨닫게해줬던 블로그
https://mystria.github.io/archivers/fail-case-java-no-such-method-error

profile
방문해주셔서 감사합니다🙂

0개의 댓글