한바다
Cause: java.sql.SQLException: error code [17034] 해당 위치에 지원되지 않는 SQL92 토큰 오류 포함 본문
Cause: java.sql.SQLException: error code [17034] 해당 위치에 지원되지 않는 SQL92 토큰 오류 포함
한바다진화 2024. 6. 18. 21:46☑️ [demoProject3-mybatis] 프로젝트 런에즈 실행시 아래와 같은 에러가 발생하였다.
demo프로젝트 실행시 회원가입 페이지에서 에러가 발생하였다.
에러가 발생한 원인은 아래와 같았다.
[31mERROR[0;39m [35m10428[0;39m [2m---[0;39m [2m[demoProject3-mybatis] [nio-8086-exec-3][0;39m [2m[0;39m[36mo.a.c.c.C.[.[.[/].[dispatcherServlet] [0;39m [2m:[0;39m 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")
크게 두번째 오류
[31mERROR[0;39m [35m9628[0;39m [2m---[0;39m [2m[demoProject3-mybatis] [nio-8086-exec-3][0;39m [2m[0;39m[36mo.a.c.c.C.[.[.[/].[dispatcherServlet] [0;39m [2m:[0;39m 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>
수정한 변수명을 저장하고 스프링부트 실행 시 아래와 같이 정상 진행 되었다!!
제출하기 버튼을 누르니 짜자잔!!! [멤버가 성공적으로 가입됐습니다.]
이 화면을 보는게 이렇게 아름다운 일이가!! 감격스럽다비
데이터베이스에 회원명이 저장되었다
스프링부트는 어떤페이지에서 어디가 연결이되고 변수명은 되도록 붙여넣기등을 하여 오류를 최소화하도록 해야겠다.
'servlet' 카테고리의 다른 글
[JSP]SQL Exception; error code 내부 표기로 변환할 수 없습니다 & 로그로 정보 확인 하기 (0) | 2024.06.20 |
---|---|
[Mapper]스피링부트 구조 이해와 조별 깃 연결 (0) | 2024.06.19 |
서블릿 실행 오류 There was an unexpected error (type=Internal Server Error, status=500). (0) | 2024.06.17 |
서블릿 실행 오류 난감 (0) | 2024.06.14 |
서블릿 실행 오류 ERROR[templates/index.html]") (1) | 2024.06.13 |