Altibase 와 CLOB 의 오묘한 관계
Database/Altibase / 2010. 3. 10. 09:58
Altibase 에서 제공해준 Altibase JDBC 를 통해서 CLOB 에 insert/update 를 하면 다음과 같은 오류 메시지가 떨어집니다.
[0]:Unable to insert(or update) NULL into NOT NULL column.
CLOB 로 잡은 컬럼이 NOT NULL 속성으로 잡혀 있었고, Altibase 에서 제공해준 PreparedStatement.setCharacterStream 를 이용하여 insert/update 를 하는 것이였습니다.
지푸라기라도 잡는 심정으로 해당 컬럼을 NULL 허용으로 잡고 다시 insert/update 를 해보니 정상적으로 동작하였습니다.
그 상태에서 바로 select 를 하여 ResultSet.getString 으로 값을 가져오게 되면 null 값만 가지고 옵니다.
select 도 Altibase 에서 제공해준 방식인 Clob.getCharacterStream 을 이용하여 가지고 오면 인코딩은 깨지긴 하였으나 값은 가지고 오는 것을 확인하였습니다.
JDBC 가 잘못된걸까요... 후우...
일단 해결책으로 보는 것은 CLOB 를 모두 NULL 허용으로 바꾸고 저희가 사용하는 iBatis 의 TypeHandler 를 이용하면 될 것으로 보입니다. 하지만 공수가 많이 드는 작업으로 생각이 되어...
Altibase 에서 제공해준 insert/update 방법입니다.
Altibase 에서 제공해준 select 방법입니다.