Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
관리 메뉴

한바다

Cause: java.sql.SQLException: error code [17034] 해당 위치에 지원되지 않는 SQL92 토큰 오류 포함 본문

servlet

Cause: java.sql.SQLException: error code [17034] 해당 위치에 지원되지 않는 SQL92 토큰 오류 포함

한바다진화 2024. 6. 18. 21:46

☑️ [demoProject3-mybatis] 프로젝트 런에즈 실행시 아래와 같은 에러가 발생하였다.

demo프로젝트 실행시 회원가입 페이지에서 에러가 발생하였다.

에러가 발생한 원인은 아래와 같았다.


ERROR 10428 --- [demoProject3-mybatis] [nio-8086-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cohttp://m.example.demo.mapper.MemberMapper.insertMemger] with root cause

회원가입 페이지에서 에러 발생 이유
 1.MemberMapper.xml페이지에서 오타
<insert id="insertMember" parameterType="cohttp://m.example.demo.dto.Meber">
<insert id="insertMember" parameterType="cohttp://m.example.demo.dto.Member">수정


2.MemberMapper.xml페이지에서 오타
<mapper namespace="cohttp://m.example.demo.mapper.MemgerMapper"> 
<mapper namespace="cohttp://m.example.demo.mapper.MemberMapper"> 수정

3.폴더명 오입력
mappers 폴더 MemberMapper.xml을 mapper-mappers로 입력함

4.MemberController에서 @getmapping주소 미지정
@GetMapping("/")
->@GetMapping("/register")

크게 두번째 오류
ERROR 9628 --- [demoProject3-mybatis] [nio-8086-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cohttp://m.example.demo.mapper.MemberMapper.insertMemger] with root cause
 ->MemberService.java에
memberMapper.insertMemger(member);
수정memberMapper.insertMember(member);

->MemberMapper에 오타
void insertMemger(Member member);

void insertMember(Member member);


; uncategorized SQLException; SQL state [99999]; error code [17034]; 해당 위치에 지원되지 않는 SQL92 토큰: 121] with root cause

 

우선 폴더명과 오타등을 수정하고 확인시 아래 페이지까지는 연결되나 제출하기 버튼시 또다시 오류가 발생하였다.

에러 발생 확인 후 다시 작성하도록 하겠다!!

 

위와 같이 이름,나이,핸드폰번호를 작성하고 제출하기를 누르면 아래와 같은 오류가 발생한다.

즉 변수명이 각 페이지마다 달랐다!

우선 해당 입력값들을 데이터 베이스에 입력해야 하는데 데이터 베이스 변수명은 아래와 같이 지정하였다

[데이터베이스에 있는 변수 컬럼값]

"MEMBER_ID" NUMBER, 
"MEMBER_NAME" VARCHAR2(50 BYTE), 
"MEMBER_AGE" NUMBER, 
"MEMBER_PHONE" VARCHAR2(20 BYTE), 

 

[Member DTO]

private int memberId;
private String memberName;
private int memberAge;
private String memberPhone;

 

[index.html]

name : <input type="text" th:field="*{memberName}" /><br> 
age :  <input type="text" th:field="*{memberAge}" /><br> 
phone : <input type="text" th:field="*{memberPhone}" /><br>

 

따라서 위 오류로 세곳의 변수명을 통일하여 재 실행하였다.

또다시 오류!! 무엇이 잘못 되었을까.... 되도록이면 데이터베이스의 변수값 형식과 다른페이지도 동일하게 맞춰줘야 하나

반드시 DB컬럼명과 일치하지는 않아도 되는 것을 알았다.

 

[수정한 변수명]

데이타 베이스 변수명은 그대로 놓고

private int memberId;

private String memberName;

private int memberAge;

private String memberPhone;

 

INSERT INTO member(member_id, member_name, member_age, member_phone)

 

name : <input type="text" th:field="*{memberName}" /><br>

age : <input type="text" th:field="*{memberAge}" /><br>

phone : <input type="text" th:field="*{memberPhone}" /><br>

 

수정한 변수명을 저장하고 스프링부트 실행 시 아래와 같이 정상 진행 되었다!!

제출하기 버튼을 누르니 짜자잔!!! [멤버가 성공적으로 가입됐습니다.]

이 화면을 보는게 이렇게 아름다운 일이가!! 감격스럽다비

데이터베이스에 회원명이 저장되었다

 

 

스프링부트는 어떤페이지에서 어디가 연결이되고 변수명은 되도록 붙여넣기등을 하여 오류를 최소화하도록 해야겠다.