본문 바로가기

트러블슈팅

Oracle DB에 데이터가 있어도 JOOQ로 조회되지 않았던 문제. CHAR 속성 문제

문제

아래와 같이 테이블에 데이터를 집어 넣었다.

create table EXCHANGE_RATE_CURRENCY
(
    EXCHANGE_RATE_TYPE CHAR(7) not null,
    CURRENCY_CD_FROM   CHAR(3) not null,
    CURRENCY_CD_TO     CHAR(3) not null,
    constraint EXCHANGE_RATE_CURRENCY
        primary key (EXCHANGE_RATE_TYPE, CURRENCY_CD_FROM, CURRENCY_CD_TO)
);

 

 

Application에서 JOOQ를 이용해 데이터를 조회하려고 하니, 'DAILY'로 데이터가 하나도 조회되지 않았다.

하지만 'AVERAGE'는 조회가 되었다.

 

원인

VARCHAR가 아닌 CHAR를 사용해서 그랬다.

CHAR(7)을 사용하니 컬럼에 값이 'DAILY가 아니라 'DAILY  '로 들어갔다.

 

해결

아래와 같이 EXCHANGE_RATE_TYPE의 컬럼 속성을 CHAR에서 VARCHAR2로 변경해주니 문제가 해결되었다.

create table EXCHANGE_RATE_CURRENCY
(
    EXCHANGE_RATE_TYPE VARCHAR2(7 char)  not null,
    CURRENCY_CD_FROM   CHAR(3) not null,
    CURRENCY_CD_TO     CHAR(3) not null,
    constraint EXCHANGE_RATE_CURRENCY
        primary key (EXCHANGE_RATE_TYPE, CURRENCY_CD_FROM, CURRENCY_CD_TO)
);