Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

한바다

[JSP]SQL Exception; error code 내부 표기로 변환할 수 없습니다 & 로그로 정보 확인 하기 본문

servlet

[JSP]SQL Exception; error code 내부 표기로 변환할 수 없습니다 & 로그로 정보 확인 하기

한바다진화 2024. 6. 20. 21:40

☑️ 스프링부트 실행시 "내부 표기로 변환할 수 없습니다" 에러가 떳다!!!!

SQLException; SQL state [99999]; error code [17059]; 내부 표기로 변환할 수 없습니다] with root cause

 

해당오류는 오라클 SQL 데이타 타입과 jsp에 작성한 자료형이 달라서 발생한 문제 였다.

[SQL 작성한 데이터 타입]

[스프링 부트 DTO.java에 작성한 자료형]

 

▶ 위와 같이 snack_name 컬럼의 데이터 타입은 VARCHAR2기 때문에

     java 작성시 자료형 int가 아닌 String 문자열 자료형으로 변경해줘야 한다!!

     그러니 데이타 타입이 NUMBER일 경우 자료형 int를 써야 하는 것이였다.

 또한 DATABASE에서 자료형이 NUMBER면 자바 작성시 int ,VARCHAR2면

String 이지만 회사마다 규율이 다르기 때문에 무조건이라 단정 지을 수는 없다

때문에 String으로 맞춰주는 회사도 있고 데이터 유형에 따라 쓰는 경우도 있다는 

것이다. Strig으로 맞춰주는 회사의 경우에는 서비스쪽 페이지에서 int로 변경

해 주는 경우가 있다고 한다.

 

☑️ JSP 스프링부트 코드 오류를 해결하기 위한 로그

작성한 구문을 실행하다 보면은 코드 오류는 없는데 정상적으로 수행이 안될 경우

작성한 값을 추적하는 log.info를 작성해 줄 수 있다!

즉 어노테이션 @Slf4j (Simple logging facade 4(for) Java 약자 -->System.out.println 비슷한 종류)

를 작성하여 inport 한 후 아래와 같이 작성해준다.

[예시 코드 1.]

public String paramTest1(HttpServletRequest req) {
String inputName = req.getParameter("inputName"); 

String inputAddress = req.getParameter("inputAddress");

int inputAge = Integer.parseInt(req.getParameter("inputAge"));

 

log.info("정보 확인하기");
log.debug("로그로 이름확인 : " + inputName);
log.debug("로그로 나이확인 : " + inputAge);
log.debug("로그로 주소확인 : " + inputAddress);

 

▶ System대신 log.debug를 활용해서 출력하는 것이 메모리 부담이 적으며 값이 잘못 된 경우 추적한다!

 

[예시코드2]

@PostMapping("test2")

public String paramTest2(@RequestParam(/*value=*/"title"/*, required=true*/) String title,

                                         @RequestParam( "writer" ) String writer,

                                         @RequestParam( "price" ) int price,

                                         @RequestParam(value="publisher",defaultValue="교보문고", required=false) String publisher

 

) {

                log.info("문제없이 insert 가능한지 확인하기");

                log.debug("title : " + title);

                log.debug("writer : " + writer);

                log.debug("price : " + price);

                log.debug("publisher : " + publisher);

              return "redirect:/param/main";

}

※ @PostMapping   어노테이션은 HTTP POST요청을 특정 메소드와 매핑하기 위해 사용하며

주로 데이터를 생성하거나 갱신할 때 사용한다.

 @RequestParam 어노테이션은 HTTP 요청 파라미터를 메소드 매개변수에 바인딩하기 위해 사용하며

주로 쿼리 마라미터나 폼 데이터를 받을 때 사용 한다.

☑️ 오류발생 방지. 오라클 컬럼 작성값과 JSP 폴더명 일치, 괄호 갯수 체크 하기

sql에 적혀있는 'images'값과 jsp "image'폴더명이 불일치 함으로 오라클에서 업데이트 수정을 하던가 jsp에서 F2를 누르고 이름을 변경 한다

 

쓰잘데기 없는 괄호 ")"가 들어갔다. 오류 표시가 없으니 깜깜. 안보이기 시작하면 암것도 안보임이다!! 주의하자고!!
td 태그가 아닌 tr태그이다. 잘못 적어 밑에 노란줄이 쭉갔다. 논란줄 없이 파란줄이 깨끗하게 쭉 이어져야 정상이다!!
괄호가 중복으로 적혀있따. 한개 빠져~!!!
스프링부트 실행시 위와 같이 info에 "BUILD FAILURE뜨면 실패이다!