Background Image

FORUM

조회 수 218 추천 수 0 댓글 15
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Linux
CUBRID Ver.
9.3 (9.3.6. 0002) 
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
Java


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
 

안녕하세요.

Merge 쿼리 실행 중 발생한 오류 Cubrid Data Type Error 에러 관련해서  도움을 구하고자 문의 드립니다.

 

현재 데이터를 List로 받아서 Merge 쿼리를 통해 UPDATE 또는 INSERT를 진행하는 쿼리를 실행하려고 했습니다만 다음과 같은 오류가 발생했습니다.

 

org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [-456];   
--- The error occurred while applying a parameter map.  
--- Check the EhojoToCubridServiceDAO.updateTcmCtrtbooks-InlineParameterMap.  
--- Check the statement (update failed).  
--- Cause: cubrid.jdbc.driver.CUBRIDException: Data type references are incompatible.

 

쿼리를 실행하는 도중 데이터타입이 맞지 않다는 오류인 것 같아 다시 살펴보았으나, 제가 보기에는 문제가 없는것으로 생각됩니다. 

 

실행한 쿼리는 다음과 같으며, 테이블의 DDL, 사용한 VO를 첨부하였습니다. 혹시 제가 쿼리를 잘못 사용한게 있을까요?

 

<update id="MethodName" parameterClass="java.util.List">
        MERGE INTO V_TCM_CTRTBOOKS AS A
        USING (
            <iterate prepend="VALUES" conjunction=",">
                (
                #[].lafCd# AS "LAF_CD",
                #[].ctrtLdgrMngNo# AS "CTRT_LDGR_MNG_NO",
                #[].atflGrpId# AS "ATFL_GRP_ID",
                #[].fyr# AS "FYR",
                #[].expsDvCd# AS "EXPS_DV_CD",
                #[].pcurDvCd# AS "PCUR_DV_CD",
                #[].ctrtKndCd# AS "CTRT_KND_CD",
                #[].ctrtMthCd# AS "CTRT_MTH_CD",
                #[].ctrtTyDtsCd# AS "CTRT_TY_DTS_CD",
                #[].newLtmDvCd# AS "NEW_LTM_DV_CD",
                #[].cprtCtrtDvCd# AS "CPRT_CTRT_DV_CD",
                #[].ctrtTrgtNm# AS "CTRT_TRGT_NM",
                #[].ctrtOtlnCn# AS "CTRT_OTLN_CN",
                #[].lctnNm# AS "LCTN_NM",
                #[].ctrtNo# AS "CTRT_NO",
                #[].pcurMngNo# AS "PCUR_MNG_NO",
                #[].pcurChrgDeptNm# AS "PCUR_CHRG_DEPT_NM",
                #[].cgpTelno# AS "CGP_TELNO",
                CAST(#[].pcurFee# AS NUMERIC(20,0)) AS "PCUR_FEE",
                #[].podrDvCd# AS "PODR_DV_CD",
                CAST(#[].frstSmzCtrtAmt# AS NUMERIC(20,0)) AS "FRST_SMZ_CTRT_AMT",
                CAST(#[].smzCtrtTottAmt# AS NUMERIC(20,0)) AS "SMZ_CTRT_TOTT_AMT",
                #[].smzCtrtYmd# AS "SMZ_CTRT_YMD",
                #[].bgcsYmd# AS "BGCS_YMD",    
                #[].cmcnYmd# AS "CMCN_YMD",
                #[].cmcnScdYmd# AS "CMCN_SCD_YMD",
                #[].rgetYn# AS "RGET_YN",
                CAST(#[].dbtBdnAmt# AS NUMERIC(20,0)) AS "DBT_BDN_AMT",
                #[].smzCstcDys# AS "SMZ_CSTC_DYS",
                #[].pvcnRsonCd# AS "PVCN_RSON_CD",
                #[].pvcnRsonSclsCd# AS "PVCN_RSON_SCLS_CD",
                #[].g2bRchDt# AS "G2B_RCH_DT",
                #[].ctrtFomCd# AS "CTRT_FOM_CD",
                #[].mdfcnYmd# AS "MDFCN_YMD",
                #[].ctrtChrgUsrId# AS "CTRT_CHRG_USR_ID",
                CAST(#[].bfSmzCtrtAmt# AS NUMERIC(20,0)) AS "BF_SMZ_CTRT_AMT",
                CAST(#[].dlyRpnAmtRt# AS NUMERIC(25,5)) AS "DLY_RPN_AMT_RT",
                #[].frstCtrtLdgrNo# AS "FRST_CTRT_LDGR_NO",
                #[].deptCd# AS "DEPT_CD",
                #[].pcurPrgDvCd# AS "PCUR_PRG_DV_CD",
                #[].exntCd# AS "EXNT_CD",
                #[].mdfcnDt# AS "MDFCN_DT",
                #[].mdfcnUsrId# AS "MDFCN_USR_ID",
                #[].giveMthCd# AS "GIVE_MTH_CD",
                #[].leasYn# AS "LEAS_YN",
                #[].smzCtrtDgr# AS "SMZ_CTRT_DGR",
                #[].smzCtrtDgrExiYn# AS "SMZ_CTRT_DGR_EXI_YN",
                #[].ctrtOpslDvCd# AS "CTRT_OPSL_DV_CD",
                #[].ctrtMthDtsDvCd# AS "CTRT_MTH_DTS_DV_CD",
                #[].ctdmDvCd# AS "CTDM_DV_CD",
                #[].ctrtCnltYn# AS "CTRT_CNLT_YN",
                #[].ctrtCn# AS "CTRT_CN",
                CAST(#[].pbnTottAmt# AS NUMERIC(20,0)) AS "PBN_TOTT_AMT",
                CAST(#[].rnsmTottAmt# AS NUMERIC(20,0)) AS "RNSM_TOTT_AMT",
                #[].cmpsMbizCd# AS "CMPS_MBIZ_CD",
                CAST(#[].lbcTottAmt# AS NUMERIC(20,0)) AS "LBC_TOTT_AMT",
                #[].scgdYn# AS "SCGD_YN",
                #[].g2bCkNm# AS "G2B_CK_NM",
                CAST(#[].g2bGdPatDscrt# AS NUMERIC(22,2)) AS "G2B_GD_PAT_DSCRT",
                CAST(#[].g2bGdPatDscAmt# AS NUMERIC(20,0)) AS "G2B_GD_PAT_DSC_AMT",
                #[].gvslMtrlDvCd# AS "GVSL_MTRL_DV_CD",
                #[].cstcDvCd# AS "CSTC_DV_CD",
                #[].lgnRgstrUsrId# AS "LGN_RGSTR_USR_ID",    
                #[].lgnRgstrDt# AS "LGN_RGSTR_DT",
                #[].frstRgstrUsrId# AS "FRST_RGSTR_USR_ID",
                #[].frstRgstrDt# AS "FRST_RGSTR_DT",
                #[].lastMdfcnUsrId# AS "LAST_MDFCN_USR_ID",
                #[].lastMdfcnDt# AS "LAST_MDFCN_DT"
                )
            </iterate>
        ) AS B
        ON  (
                B.LAF_CD = A.LAF_CD
            AND B.CTRT_LDGR_MNG_NO = A.CTRT_LDGR_MNG_NO
            )
        WHEN MATCHED THEN
            UPDATE SET A.ATFL_GRP_ID = B.ATFL_GRP_ID
                     , A.FYR = B.FYR
                     , A.EXPS_DV_CD = B.EXPS_DV_CD
                     , A.PCUR_DV_CD = B.PCUR_DV_CD
                     , A.CTRT_KND_CD = B.CTRT_KND_CD
                     , A.CTRT_MTH_CD = B.CTRT_MTH_CD
                     , A.CTRT_TY_DTS_CD = B.CTRT_TY_DTS_CD
                     , A.NEW_LTM_DV_CD = B.NEW_LTM_DV_CD
                     , A.CPRT_CTRT_DV_CD = B.CPRT_CTRT_DV_CD
                     , A.CTRT_TRGT_NM = B.CTRT_TRGT_NM
                     , A.CTRT_OTLN_CN = B.CTRT_OTLN_CN
                     , A.LCTN_NM = B.LCTN_NM
                     , A.CTRT_NO = B.CTRT_NO
                     , A.PCUR_MNG_NO = B.PCUR_MNG_NO
                     , A.PCUR_CHRG_DEPT_NM = B.PCUR_CHRG_DEPT_NM
                     , A.CGP_TELNO = B.CGP_TELNO
                     , A.PCUR_FEE = B.PCUR_FEE
                     , A.PODR_DV_CD = B.PODR_DV_CD
                     , A.FRST_SMZ_CTRT_AMT = B.FRST_SMZ_CTRT_AMT
                     , A.SMZ_CTRT_TOTT_AMT = B.SMZ_CTRT_TOTT_AMT
                     , A.SMZ_CTRT_YMD = B.SMZ_CTRT_YMD
                     , A.BGCS_YMD = B.BGCS_YMD
                     , A.CMCN_YMD = B.CMCN_YMD
                     , A.CMCN_SCD_YMD = B.CMCN_SCD_YMD
                     , A.RGET_YN = B.RGET_YN
                     , A.DBT_BDN_AMT = B.DBT_BDN_AMT
                     , A.SMZ_CSTC_DYS = B.SMZ_CSTC_DYS
                     , A.PVCN_RSON_CD = B.PVCN_RSON_CD
                     , A.PVCN_RSON_SCLS_CD = B.PVCN_RSON_SCLS_CD
                     , A.G2B_RCH_DT = B.G2B_RCH_DT
                     , A.CTRT_FOM_CD = B.CTRT_FOM_CD
                     , A.MDFCN_YMD = B.MDFCN_YMD
                     , A.CTRT_CHRG_USR_ID = B.CTRT_CHRG_USR_ID
                     , A.BF_SMZ_CTRT_AMT = B.BF_SMZ_CTRT_AMT
                     , A.DLY_RPN_AMT_RT = B.DLY_RPN_AMT_RT
                     , A.FRST_CTRT_LDGR_NO = B.FRST_CTRT_LDGR_NO
                     , A.DEPT_CD = B.DEPT_CD
                     , A.PCUR_PRG_DV_CD = B.PCUR_PRG_DV_CD
                     , A.EXNT_CD = B.EXNT_CD
                     , A.MDFCN_DT = B.MDFCN_DT
                     , A.MDFCN_USR_ID = B.MDFCN_USR_ID
                     , A.GIVE_MTH_CD = B.GIVE_MTH_CD
                     , A.LEAS_YN = B.LEAS_YN
                     , A.SMZ_CTRT_DGR = B.SMZ_CTRT_DGR
                     , A.SMZ_CTRT_DGR_EXI_YN = B.SMZ_CTRT_DGR_EXI_YN
                     , A.CTRT_OPSL_DV_CD = B.CTRT_OPSL_DV_CD
                     , A.CTRT_MTH_DTS_DV_CD = B.CTRT_MTH_DTS_DV_CD
                     , A.CTDM_DV_CD = B.CTDM_DV_CD
                     , A.CTRT_CNLT_YN = B.CTRT_CNLT_YN
                     , A.CTRT_CN = B.CTRT_CN
                     , A.PBN_TOTT_AMT = B.PBN_TOTT_AMT
                     , A.RNSM_TOTT_AMT = B.RNSM_TOTT_AMT
                     , A.CMPS_MBIZ_CD = B.CMPS_MBIZ_CD
                     , A.LBC_TOTT_AMT = B.LBC_TOTT_AMT
                     , A.SCGD_YN = B.SCGD_YN
                     , A.G2B_CK_NM = B.G2B_CK_NM
                     , A.G2B_GD_PAT_DSCRT = B.G2B_GD_PAT_DSCRT
                     , A.G2B_GD_PAT_DSC_AMT = B.G2B_GD_PAT_DSC_AMT
                     , A.GVSL_MTRL_DV_CD = B.GVSL_MTRL_DV_CD
                     , A.CSTC_DV_CD = B.CSTC_DV_CD
                     , A.LGN_RGSTR_USR_ID = B.LGN_RGSTR_USR_ID
                     , A.LGN_RGSTR_DT = B.LGN_RGSTR_DT
                     , A.FRST_RGSTR_USR_ID = B.FRST_RGSTR_USR_ID
                     , A.FRST_RGSTR_DT = B.FRST_RGSTR_DT
                     , A.LAST_MDFCN_USR_ID = B.LAST_MDFCN_USR_ID
                     , A.LAST_MDFCN_DT = B.LAST_MDFCN_DT
            
        WHEN NOT MATCHED THEN
            INSERT VALUES
            (
                B.LAF_CD,
                B.CTRT_LDGR_MNG_NO,
                B.ATFL_GRP_ID,
                B.FYR,
                B.EXPS_DV_CD,
                B.PCUR_DV_CD,
                B.CTRT_KND_CD,
                B.CTRT_MTH_CD,
                B.CTRT_TY_DTS_CD,
                B.NEW_LTM_DV_CD,
                B.CPRT_CTRT_DV_CD,
                B.CTRT_TRGT_NM,
                B.CTRT_OTLN_CN,
                B.LCTN_NM,
                B.CTRT_NO,
                B.PCUR_MNG_NO,
                B.PCUR_CHRG_DEPT_NM,
                B.CGP_TELNO,
                B.PCUR_FEE,
                B.PODR_DV_CD,
                B.FRST_SMZ_CTRT_AMT,
                B.SMZ_CTRT_TOTT_AMT,
                B.SMZ_CTRT_YMD,
                B.BGCS_YMD,
                B.CMCN_YMD,
                B.CMCN_SCD_YMD,
                B.RGET_YN,
                B.DBT_BDN_AMT,
                B.SMZ_CSTC_DYS,
                B.PVCN_RSON_CD,
                B.PVCN_RSON_SCLS_CD,
                B.G2B_RCH_DT,
                B.CTRT_FOM_CD,
                B.MDFCN_YMD,
                B.CTRT_CHRG_USR_ID,
                B.BF_SMZ_CTRT_AMT,
                B.DLY_RPN_AMT_RT,
                B.FRST_CTRT_LDGR_NO,
                B.DEPT_CD,
                B.PCUR_PRG_DV_CD,
                B.EXNT_CD,
                B.MDFCN_DT,
                B.MDFCN_USR_ID,
                B.GIVE_MTH_CD,
                B.LEAS_YN,
                B.SMZ_CTRT_DGR,
                B.SMZ_CTRT_DGR_EXI_YN,
                B.CTRT_OPSL_DV_CD,
                B.CTRT_MTH_DTS_DV_CD,
                B.CTDM_DV_CD,
                B.CTRT_CNLT_YN,
                B.CTRT_CN,
                B.PBN_TOTT_AMT,
                B.RNSM_TOTT_AMT,
                B.CMPS_MBIZ_CD,
                B.LBC_TOTT_AMT,
                B.SCGD_YN,
                B.G2B_CK_NM,
                B.G2B_GD_PAT_DSCRT,
                B.G2B_GD_PAT_DSC_AMT,
                B.GVSL_MTRL_DV_CD,
                B.CSTC_DV_CD,
                B.LGN_RGSTR_USR_ID,
                B.LGN_RGSTR_DT,
                B.FRST_RGSTR_USR_ID,
                B.FRST_RGSTR_DT,
                B.LAST_MDFCN_USR_ID,
                B.LAST_MDFCN_DT
            )
    </update>

 

  • ?
    엄기호 2023.11.14 16:50
    큐브리드를 이용해주셔서 감사합니다.

    테이블 DDL.txt 파일을 보니 SMZ_CSTC_DYS 컬럼 타입이 NUMERIC(5, 0)으로 되어 있습니다.
    그런데 MERGE INTO절에서는 VARCHAR 타입으로 되어 있어서 발생한 것으로 보입니다.
    #[].smzCstcDys# AS "SMZ_CSTC_DYS",
    --> CAST(#[].smzCstcDys# AS NUMERIC(5,0)) AS "SMZ_CSTC_DYS", 으로 변경하여 수행해보세요.
  • ?
    yhpark 2023.11.14 17:06

    안녕하세요. 우선 답변 감사합니다.

    말씀하신대로 해당부분을 수정 후 쿼리를 실행해보았으나..... 동일한 에러가 발생했습니다.

    현재 데이터가 잘못 되었을 가능성도 있다고 생각하여 데이터를 살펴보았으나, 데이터는 정상적으로 출력되고 있습니다.


    혹시 다른 부분이 있을까요?

  • ?
    엄기호 2023.11.14 17:24
    9.x 버전을 사용하고 있네요.
    그럼 컬럼 타입이 DATE으로 되어 있는 값들을 확인하셔서 해보셔야 할 것 같습니다.
  • ?
    동구 2023.11.14 17:29
    혹시, not null 컬럼에, null 값이 update 되는건 아닌지요?
  • ?
    엄기호 2023.11.14 17:40
    not null이면 null를 넣을 수 없다는 의미 입니다.
  • ?
    동구 2023.11.14 17:55
    네.. 그래서 나는 에러가 아닌지 헤서요.
  • ?
    yhpark 2023.11.15 09:16

    안녕하세요! 답변 감사합니다!

    답변달아주신 것을 확인 후

    1. CAST(#[].smzCstcDys# AS NUMERIC(5,0)) AS "SMZ_CSTC_DYS"
    2. DATE 타입 컬럼 값 확인
    3. 데이터 확인을 통해 NOT NULL에 NULL 값이 들어가는지?

    위에 3가지 사항을 확인하고 쿼리를 다시 실행해보았으나 동일한 오류가 발생하였습니다.
    DATE 타입의 경우 현재 VARCHAR로 "20231110112949" 와 같은 형태(YYYY MM DD HH24 MI SS)로 데이터가 들어오는데
    CASTING 유무와 상관없이 정상적으로 진행되었습니다.

    NOT NULL 컬럼에 NULL값이 들어가는거 아닌가에 대한 말씀에 대해서는 전체 데이터확인을 해보았으나 데이터는 정상적으로 들어오고 있었습니다.

    혹시 다른 부분이 있을 수 있을까요?

  • ?
    동구 2023.11.15 09:19

    https://diaryofgreen.tistory.com/201
    위 링크 참고해보세요.

     

    SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [-456]

    위 검색어로 구글링 해보세요.

     

    대부분, 데이터타입 문제에 대해 언급하고 있습니다. null 값 들어가는게 있는지 다시한번 확인해 보세요.

  • ?
    yhpark 2023.11.15 09:40
    안녕하세요! 답변 감사합니다.

    제가 제대로 이해했는지 모르겠지만...
    현재 쿼리가 조회(SELECT)하는 쿼리가 아니고 <update> ~~ </update>의 결과를 특정 VO에 담지 않고 있는데... 결과값의 매핑을 확인하라는 게 어떤 부분을 말씀하시는건지 잘 모르겠습니다.

    혹시 조금 더 자세하게 말씀해주실 수 있을까요?
  • ?
    tonggu 2023.11.15 09:54
    네,
    결과값의 매핑을 확인하라는것은 USING 문에 넘어온 변수들의 값을 확인하라는 겁니다. 여기에 null 값이 넘어오는건 아닌지?

    그리고, CUBRID 에러코드 -456 은 "데이터 타입 참조 오류라고 나오네요"

    $CUBRID/log/broker/sql_log/ 아래에서 -456 을 찾아보면 에러를 발생시키는 질의를 찾아볼 수 있습니다.
  • ?
    yhpark 2023.11.15 11:17 Files첨부 (1)

    안녕하세요. 자세한 답변 감사합니다.

     

    말씀하신대로 USING 절에서 사용된 값을 확인한 결과 NULL값이 있기는 하지만 NOT NULL 칼럼에 NULL 값이 매칭되는 것은 없었습니다.

     

    그리고 말씀하신 경로를 찾아가 에러코드 로그를 확인해본 결과 첨부한 사진과 같은 로그만 확인할 수 있었습니다.

     

    혹시 로그를 더 자세하게 볼 수 있는 경로가 있을까요?..  

     

    이미지.png

     

  • ?
    tonggu 2023.11.15 11:38
    반드시 not null 컬럼이 아니더라도,
    관련해서, 스키마, USING 절에 넘어온 값 및 타입, VO 에 선언된 타입 등을 확인해 보세요.

    그리고, 구글링 해보면 관련된 자료가 많은듯 합니다.
    iBatis 에서 null 값을 일괄적으로 처리하는 부분들도 있는 것 같구요.

    그리고, 지금 캡쳐하신 로그는 error_log 에서 캡쳐하신것으로 보입니다.
    sql_log 디렉토리내 개별 sql.log 들을 확인해 보세요..
  • ?
    yhpark 2023.11.15 14:31
    안녕하세요. 빠른 답변 감사드립니다.

    말씀하신대로 sql.log 파일을 확인해보니 좀 더 자세한 내용을 알 수 있었는데

    에러가 발생한 원인이 실행시키는 쿼리 길이가 길어서 그런지 쿼리가 완성되지 못하고 실행된걸로 확인됩니다.

    해당 문제는 큐브리드 설정을 통해 해결할 수 있는지 알 수 있을까요?"
  • ?
    tonggu 2023.11.15 16:56
    쿼리가 완성되지 못하고 실행됐다면,,, application 쪽에서 짤려서 보낸걸로 보입니다. application 에서 로그를 찍어 확인해 보시죠?
  • ?
    yhpark 2023.11.16 10:12
    많은 질문에도 계속 답변 해주셔서 감사합니다!

    Application 에서 쿼리를 좀 더 콤팩트하게 만들어서 문제를 해결해보도록 하겠습니다.

  1. No Image notice by admin 2024/04/23 by admin
    Views 49 

    CUBRID 사용자를 위한 DBeaver 도구 출시 안내

  2. SQLGate for CUBRID 영구 무료 라이선스 제공

  3. CSQL 로그와 매니저 로그를 ON/OFF할 수 있나요?

  4. 쉘스크립트에서 큐브리드 접속

  5. No Image 14Feb
    by 브로콜리너마저
    2020/02/14 by 브로콜리너마저
    Views 227  Replies 1

    cubrid manager 에서 select 조회 시 검색 단위에 대해서 질문있습니다.

  6. jvm을 못찾습니다.

  7. 큐브리드 unload 문의드립니다.

  8. cubrid manager 에러??

  9. [-830]Cannot allocate query entry any more. Maximun allocatable entries are 100

  10. utf8mb4 지원되나요???

  11. 큐브리드 매니저 접속 문제(jdbc 드라이버)

  12. 권한 부여 방법

  13. Cubrid DB 서버 swap memory 사용률 관련 질의

  14. cubrid linux 설치시 cli 인터렉티브 없이 설치할 수 있는방법좀 부탁드립니다.

  15. loaddb명령으로 sql파일 입력시 pk의 데이터가 중복일 경우에 대한 대처가 가능한 명령문을 알려주시면 감사하겠습니다.

  16. 테이블이 시스템테이블만 보입니다. 왜그럴까요 ?

  17. busy 쿼리 자동 종료 문의

  18. 큐브리드 테이블 excel 출력관련

  19. CUBRID 복구시 테이블 복구 안되는 문제

  20. 데이터 인서트 할떄 질문

  21. cubrid JDBC Driver의 클래스 내용이 궁금합니다.

  22. No Image 25Aug
    by 덴드로비움
    2017/08/25 by 덴드로비움
    Views 221 

    CMT로 전환시 스키마를 찾을수 없습니다. 나옵니다. (해결했읍니다. 재부팅하니까 되네요..)

Board Pagination Prev 1 ... 151 152 153 154 155 156 157 158 159 160 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales