Notice
Recent Posts
Recent Comments
Link
개발자 jin K
[Oracle] ORA-01427 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. 본문
지나가는 에러지만 병원 내부에서 오라클 에러가 났다.
오류 코드는 ORA-01427. 어떤 문제 였는지 한번 회고해 보았다.
Caused by: java.sql.SQLException: ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.
java.sql.SQLException: ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.
WARN 14407 --- \[o-8082-exec-144\] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [java.util.concurrent.CompletionException: java.sql.SQLException: ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.
]
상세 에러 로그는 혹시 모를 대외비이니 올리지 않고 문제의 에러 로그를 찾아보자면 이러하다.
문제 상황은 결과가 하나가 나와야 하는 질의에 2개가 나온다는 것이다.
주로 서브쿼리에서 1건을 초과한 레코드라 나올 때 발생하는 에러다.
서브쿼리의 레코드가 1건이 아닌 총 N건이 나올 때 exception이 터지는 것이다.
인터넷에 나온 쿼리 수정 방법은 두 가지 이다.
-CODE=
에서 CODE IN
으로 변경
- 서브쿼리에서 레코드가 단 건이 나오도록 조건절 추가 및 수정
즉 서브쿼리에서 단건이 나오도록 조건을 변경하거나, 서브 쿼리 자체가 여러 건 나오는 것을 인정하도록 만드는 방법이다.
이번 상황의 경우 우리 회사 쪽 소스가 아닌 병원 내부 소스의 문제라고 보여지는데, 한 사람의 환자가 하루에 여러 건의 병원 예약을 (진료과를 달리하여) 할 수 있다는 케이스를 빼놓고 내부에서 프로시저를 짰던 것 같다.
현재는 재현되지 않는 오류이고 해결!
- 배운 점
- 오라클 오류 코드 ORA-01427
- 프로시저 오류
- 우리 쪽 소스 프론트단 promise 분석
에러를 분석하는 것은 늘 재밌고 배우는 점이 있다.
'기타' 카테고리의 다른 글
[Git] git ignore 특정 파일 또는 폴더 제외 or 무시하기 (0) | 2021.06.17 |
---|---|
[Python] PyCharm에서 pandas가 import 안될 때 (0) | 2021.06.06 |
[Git] git cannot identify version of git executable 문제 (0) | 2021.06.05 |
[Jekyll] jekyll로 github.io 블로그 만드는 방법 (0) | 2021.06.04 |
[Linux] linux 특정 문자 grep 해서 앞 뒤로 몇 줄 잡아내기 (0) | 2021.06.03 |