본문 바로가기

Data Layter/TIBERO

5072: Failure converting NUMBER to or from a native type.

티베로에서 DDL을 수행할 때 "JDBC-5072 Failure converting NUMBER to or from a native type” error in tibero" 와 같은 오류 메시지를 볼 수 있다.

 

처음 보면 당황한다. 테이블에 데이터가 존재하기 때문에 나는 버그라고 착각하는데 이건 그냥 티베로 버그다.

 _DD_TBL 테이블의 ROW_CNT가 NULL이어서 NUMBER가 아니기 때문에 오류가 난 것으로 파악된다.

 

해결방법

우선 SYS 계정으로 접속해야 한다.

 

단일 테이블이 문제인 경우

 

1.오류가 난 테이블의 OBJECT_ID를 검색한다.

SELECT OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME = '(TABLE_NAME)';

 

2. 검색된 OBJECT_ID들의 ROW_CNT를 0으로 만든다.

UPDATE SYS._DD_TBL SET ROW_CNT = 0 WHERE OBJ_ID = (OBJECT_ID);

 

여러 테이블이 문제인 경우

1. 오류가 난 OBJECT ID를 확인한다.

SELECT A.OBJECT_ID 
FROM DBA_OBJECTS A
INNER JOIN (SELECT OBJ_ID, ROW_CNT FROM SYS._DD_TBL ) B 
ON A.OBJECT_ID = B.OBJ_ID
WHERE B.ROW_CNT IS NULL;

2. 해당하는 OBJECT_ID들의 ROW_CNT를 0으로 만든다.

UPDATE SYS._DD_TBL SET ROW_CNT = 0 
WHERE OBJ_ID IN ( 
	SELECT A.OBJECT_ID 
	FROM DBA_OBJECTS A INNER JOIN (SELECT OBJ_ID, ROW_CNT FROM SYS._DD_TBL ) B 
	ON A.OBJECT_ID = B.OBJ_ID
	WHERE B.ROW_CNT IS NULL);

 

티베로 가이드에 이러한 내용이 전혀 반영되어 있지 않다.

 

간혹 여러개 테이블이 모두 문제가 생기는 경우가 있다.