문제

나는 생산 오류를 문제를 해결하기 위해 일주일 내내 일하고 있습니다.

나는 결국 모든 혼란을 일으키는 범인 기록을 찾을 수있는 지점을 얻었습니다.

다음 오류 메시지가 있습니다.

java.sql.SQLException: [BEA][Oracle JDBC Driver][Oracle]ORA-01438: value larger than specified precision allows for this column

모든 정보에서 이벤트가 잘못된 데이터 일 수 있다고 생각합니다. 시스템은 삽입하려고합니다.

10385274000

숫자로 (10)

그 값이 적합한 지 아닌지 어떻게 알 수 있습니까?

고맙습니다

편집하다

Michel Todd 제안에 따라 :

create table xyz( testfield number( 10 ) );

insert into xyz values( 10385274000 )


Error: ORA-01438: value larger than specified precision allowed for this column

감사합니다!!!

STACKOVERFLOW 감사합니다

편집하다

내 자신에 대한 메모 (문제가 무엇인지 잊지 말고)

이벤트 시간에 데이터베이스 테이블에 저장하는이 Oracle 제품이있었습니다.

START_TIME|END_TIME

매일 밤이 정보를 다른 테이블로 백업하지만 프로세스에서 trnsformation을 수행합니다. 그것은 다음과 같이 보관합니다.

TOTALTIME

이 필드가 EndTime -StartTime을 빼서 계산 될 때 문제가 발생합니다. 결과 숫자는이 열에 저장되어 다음과 같이 정의됩니다. 숫자 (10)

글쎄, end_time-start_time이 시간 (약 4 개월 정도)에 너무 멀지 않은 경우 (밀리 초) 값이 너무 커서 대상 열에 맞지 않을 것입니다 (EndTime과 같은 것이 있다고 생각합니다. .gettime () - 코드 내부의 starttime.gettime ()

이 모든 것이 지금 너무 쉽고 어리석은 소리를 낸다. 그러나 알아내는 데 4 일+가 걸렸다. 왜냐하면 이것은 닫힌 응용 프로그램이기 때문에 내가 무슨 일이 일어나고 있는지에 대한 단서가 없기 때문에 내가 가진 유일한 것은 StackTrace 였기 때문이다.

나는 이것을 찾기 위해 전체 프로세스를 찾기 위해 전체 프로세스를 바꾸어야했다.

내가 그렇게했을 때, 나는 "손으로 코딩 된 마이커"에서 같은 오류가 발생하여 그것을 해결하는 방법을 찾습니다!

도움이 되었습니까?

해결책

숫자 10 (10)은 필드 크기를 지정합니다. 즉, 필드는 최대 10 자까지 숫자를 유지할 수 있습니다. 귀하의 번호에는 11 자리가 있으므로 값이 크게 적용됩니다. (<)보다 작은 것은 100 억 (10,000 000 000)을 문제없이 삽입 할 수 있습니다. 그것이 삽입하기 전에 값을 검증하려는 지 확인해야 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top