제2 외국어 영역2008. 10. 21. 12:12
문제의 발단은...
  
  public String lengthString(Object obj, int length) {

        if(obj == null || obj.toString().length() ==0) return "";

        byte[] bytes = obj.toString().trim().getBytes();
        if (length >=  bytes.length)     return obj.toString();

        int counter = 0;
        for (int i = length - 1; i >= 0; i--) {
            if (((int) bytes[i] & 0x80) != 0)
                counter++;
        }
        return new String(bytes, 0, length - (counter % 2));
    }


해당 메소드에서 시작되었다;; 덕분에 오전 2시간을 날려 먹었지만;; ㅡㅡ
음..

디비에 넣기전에;;바이트 단위 길이를 체크 하여서 ...
넘어온 랭스 만큼만 짤라서 리턴해주어서 ;;
디비 입력길이를 맞춰주는 그러한 놈이 엇는데;;

이상하게도 ;;; 자꾸...
ORA-01401: 열에 입력한 값이 너무 큽니다 라는 오류만 나오는것;;

한두건 인서트 하는것도 아니고... 몇만건 인서트 도중에 나는 거라서 ;; ㅡㅡ 그것도 배치로 짤라서 몇천껀씩
보내는 작업인데;;

문제는 랭스 체크는 ... trim을 써서 체크를 하고...
공백이 제거된 글자열이 ... 해당 길이 문자열 보다 작으면 ...
그대로 trim을 한 놈을 리턴해야 하는데;;
trim이 바져 버렸던것;; ㅡㅡ;;;

완전 바보짓 한거지;; ㅡㅡ
나중에 되서야;;; 이상함을 깨닫고 찾아 내긴 했지만;;;
완전.. ㅜㅜ

흠....... 덕분에 매일 칼같이 돌아야 할 배치 작업이 돌지 못했고..
(머 그덕분에 다른 로직도 추가하고 좀더 완성형에 가까워졌지만...);;
아까운 점심시간도 반납을 해야 할 상황....

음........ 개발은 언제나 삽질로 난무 한듯..;;
조금이나마 Java 널 의심한 나를 용서해다오;;; 사실은 오라클이 이상하다고 생각했었어;; ㅜ
Posted by is윤군

댓글을 달아 주세요