2024. 4. 3. 10:00ㆍ[Trouble shooting]/[DB]
개요
시스템 오픈 전 데이터 이관과 화면 테스트 중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을 항상 조심하자.