블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
11-07 00:55
 

달력

« » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
 

최근에 올라온 글

최근에 달린 댓글


오라클에서 잘 돌아가는 쿼리를 알티베이스에 그대로 적용했더니 아래와 같은 오류가...

--- Check the SQL Statement (preparation failed).
--- Cause: java.sql.SQLException: [0]:Invalid use of host variables


원인은 함수에 prepared statement 의 파라미터가 들어갈 때 발생하는 오류였습니다.

지난번에 회사 동료분이 알려준 해결 방법은 cast 로 파라미터를 감싸주는 것 입니다.

예를 들어 함수이름이 f_new_number 이고,  파라미터가 type 이라면
...
f_new_number(?)
...
가 아닌
...
f_new_number(cast(? as varchar(20)))
...


일단은 잘 될거라고 믿어 의심치 않습니다.




Posted by 자수씨
, |

알티베이스는 "CLOB 의 데이터가 커서 여러번 I/O를 수행하기 때문에 하나의 트랜잭션으로 묶어 주기위해서 설정" 한다고 회사 분이 알려주셨습니다.

그래서 autocommit 을 풀어주어 SELECT 는 잘 됩니다.

근데 문제는 INSERT/UPDATE/DELETE 의 경우 소스 레벨에서 commit 을 해주어야 한다는게...

어떻게 SELECT 할 때만 자동으로 autocommit 을 풀고 갈 순 없을까요


후후후훔...

Posted by 자수씨
, |



단점은 CLOB 컬럼이 NOT NULL 일 경우 insert/update 가 되지 않습니다. 쳇...

SqlMapConfig.xml 에 아래 typeHandler 를 추가해주면 jdbcType 이 CLOB 인 컬럼들이 해당 속성을 타게 됩니다.
(resultMap 이나 parameterMap 으로 설정하는 것으로 테스트 해보았습니다. 그냥 되는지는 아직 검증이 되지 않았습니다.)
 <typeHandler javaType="String" jdbcType="CLOB" callback="kr.co.vicki.utils.ibatis.handler.AltibaseClobStringTypeHandler" />



흠.. 이게 무신 고생인지...


Posted by 자수씨
, |

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 방법입니다.



Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백