[문제 해결]_DB tool 쿼리 결과와 서버 쿼리 결과가 다를 때

2024. 4. 3. 10:00[Trouble shooting]/[DB]

728x90
반응형

개요

시스템 오픈 전 데이터 이관과 화면 테스트 중ASIS 에서는 잘 동작하던 화면이TEST 환경에서는 동작하지 않았고

 

같은 DB를 바라보는 DBtool [heidisql] 결과와 같은 쿼리의 mybatis 결과 가 다른 이유 분석

환경

DB Tool : heidisql

RDBMS : mySQL

 

Server : Tomcat

라이브러리 : mybaits , spring


 

쿼리는 가져올수 없지만,

 

지방 코드를 다른 테이블에서 가져오고

left join 으로 그 코드에 맞는 데이터를 가져오는 쿼리였습니다.

 

통계형으로 group by 를 하여 데이터를 sum 하는 로직이 들어있었습니다.

 

내가 해본것

 

1. 로그 찍어보기

- Tool 의 쿼리값과, 서버에서 쿼리실행시 결과가 다른것을 인지하게 됨

 

2. Convert 사용하여 형변환 시도

- 혹시 double 형이 문제가 되는지 확인 ... 이상없음

 

3. join시 데이터 하드코딩화

- 하드코딩한 부분은 left join 이 되는것을 확인, 연산부분에 문제가 있음을 확인

 

4. sum 연산 전 데이터가 없을 경우 (null) 인경우 null 로 받는 부분이 있었음 , 이부분을 null 이 아닌 0 으로 변경

- 해결

 

결론

같은 파라미터를 받고, 같은 쿼리를 실행시키더라도.. 결과값이 다르게 나올수 있음..

 

운용서버와 DB tool 에서는 null인경우에도 연산이 가능했던 것이고테스트 서버에서는 null인경우 데이터가 전부 null 이 되어 join시 결과가 안나온것.

 

null을 항상 조심하자.

728x90
반응형