
1. 오류 개요 PostgreSQL과 MyBatis를 사용하여 데이터베이스 작업을 수행하는 중 "invalid input syntax for type numeric" 오류가 발생하였다. 2. 오류 발생 위치 및 원인 분석 2.1 오류 발생 위치 오류가 발생한 위치는 MyBatis SQL을 선언한 XML 파일 내의 쿼리에서 확인되었다. 문제 발생 쿼리 (일부) update test_tableset num = nullif(#{paramNum}, '')::numericwhere id = #{id}2.2 오류 메시지 및 원인 분석 오류 메시지: invalid input syntax for type numeric : "" 파라미터 paramNum이 빈 문자열 ('')로 전달되는 경우 발생 이미 nullif(파라미..

oracle DB를 사용하여 중이며 추가적으로 데이터를 조회해야 하는 작업이었다. 문제가 발생했던 쿼리를 임의의 테이블로 재구성 해보았고 아래와 같다. SELECT (SELECT Z.사용자명 FROM (SELECT U.사용자명 FROM 사용자_테이블 U WHERE U.사용자_소속 = P.상품_관리자_소속 order by U.로그인_일자 DESC ) Z WHERE Z.ROWNUM = 1) 가장 최근에 접속한 사용자 FROM 상품_테이블 P 쿼리를 간략하게 설명하자면 상품을 관리하는 사용자의 소속에서 가장 최근에 로그인한 한 명을 추출하는 쿼리이다 해당 쿼리를 실행하였을 때 표출되는 메시지는 아래와 같다. ORA-00904: "P"."상품_관리자_소속": invalid identifier 메시지를 그대로 읽..

발단 oracle DB 환경을 관리하던 중 DB서버 이동을 하게 되었음. 신규 서버에 oracle DB가 다시 세팅되고 며칠간 모니터링 수행 중 Tablespace 중 UNDOTBS 사용량이 아주 빠른 속도로 증가되는 것을 발견. 원인 파악을 하여 바로 조치하는 것이 제일 베스트이지만 당장의 서비스 운영을 위해서 임시조치로 해당 테이블스페이스를 증설한 상태에서 원인 파악에 들어갔음. 사전조사 및 참고자료 UNDOTBS(Undo Tablespace)란? 읽기 일관성을 유지하기 위해 사용되는 Tablespace로 데이터베이스 운영 중 많은 사용자들에게서 DML 작업이 이루어지는데 이때 Rollback하게 되는 경우를 대비하여 DML 작업이 발생했을 때 삭제 및 수정 이전의 값에 대한 정보를 UNDO Segm..
원인 작업하다가 아래와 같은 쿼리에서 의문점이 생김. 좌측 날짜와 시간을 나타내는 문자형 데이터(실제로는 테이블 데이터 비교하기 쉽게 직접 값 넣음)와 우측 현재 시스템 시간을 YYYYMMDD 형식으로 변환한 문자형을 비교하는데 보자마다 생긴 의문점은 자릿수와 날짜 형식이 다른데 어떻게 비교가 되는가 였고 더욱 의문점은 원하는 결과가 나왔다는 것이다. 문제의 쿼리 1 2 3 4 5 6 7 SELECT * FROM TABLE01 WHERE '20200101000000'
SQL 변수 종류 리터럴 변수 란? sql 구문 중 where절에 column과 비교되는 값이 상수값으로 직접 선언된 경우의 변수 예) SELECT * FROM TABLE01 WHERE COL01 = "TEST"; 바인드 변수 란? sql 구문 중 where절에 column과 비교되는 값이 바인드 변수 형태로 사용하는 경우의 변수 바인드 변수의 자리에는 parameter로 넘겨지는 값들이 대체됨. 예) SELECT * FROM TABLE01 WHERE COL01 :=1; PARSE 종류 HARD PARSE sql 구문을 수행 시 SGA - shared pool - Library Cache 영역에서 해당 구문이 존재 여부를 조회하여 존재하지 않는 경우 해당 구문의 문법 및 권한 검사, 테이블 및 컬럼 존재..
발단현재 사용 중인 DB는 oracle이며, 이미 생성되어 있는 테이블에 중국어 데이터를 insert 할 작업이 잡혔다.전달받은 중국어 데이터를 insert 후 정상적으로 데이터가 적재되었는지 확인하였으나실제 확인된 데이터는 ?(물음표)가 포함되어 있는 비정상적인 형태로 적재가 확인되었다. 직접 결과를 확인하며 진행하기 위해 select 쿼리 실행 후 결과를 보고 비교해보겠다.수행 쿼리 : select '服务' from dual; 결과 : 服? 이와 같이 중국어 데이터의 깨짐 현상이 보였다. 원인 분석참고로 중국어, 일어 등의 유니코드를 지원하지 않는 CharacterSet을 가진 DB에서 유니코드를 지원하기 위해 사용되는 CharacterSet으로 National CharacterSet 이 있다.Nat..
- Total
- Today
- Yesterday
- Eclipse
- Oracle
- SQL
- standardmultiparthttpservletrequest
- JPA
- 깨짐
- web
- SSL
- TLS
- mybatis
- IMAGE
- Git
- gradle
- jQuery
- parse
- vscode
- tomcat
- 날짜
- abstractcauchorequest
- React
- spring
- SpringBoot
- Java
- 컨테이너
- JSON
- html
- Windows
- WAS
- Linux
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |