본문 바로가기
Database/Amazon Aurora MySQL

SQL Error[1292][22001]: Data truncation: Truncated incorrect INTEGER value: 'GF'

by DBTechBiz 2022. 8. 22.

AWS Aurora MySQL 환경

Engine Version : 5.7.mysql_aurora.2.10.2
Instance Class : Master - db.r5.xlarge (Writer 1 Instance)

AWS Aurora MySQL Error 이슈 및 Test Case

- CASE WHEN 구문 조건 사용 시 SQL Error[1292][22001]: Data truncation: Truncated incorrect INTEGER value 에러 발생

-- Test 를 위한 biz_item_comps 테이블 생성
CREATE TABLE biz_item_comps (
	biz_item_comps_uid varchar(27) NOT NULL,
    version_uid varchar(27) NOT NULL,
    biz_item_uid varchar(27) NOT NULL,
    mng_item_cd varchar(50) NOT NULl,
    PRIMARY KEY (biz_item_comps_uid),
    KEY biz_item_comps_ix01 (version_uid,biz_item_uid, mng_item_cd)
 );
 
 -- Test 를 위한 biz_item_comps_repl 테이블 생성 (위 테이블과 동일한 구조)
 CREATE TABLE biz_item_comps_repl (
	biz_item_comps_uid varchar(27) NOT NULL,
    version_uid varchar(27) NOT NULL,
    biz_item_uid varchar(27) NOT NULL,
    mng_item_cd varchar(50) NOT NULl,
    PRIMARY KEY (biz_item_comps_uid),
    KEY biz_item_comps_repl_ix01 (version_uid,biz_item_uid, mng_item_cd)
 );
 
 -- biz_item_comps 테이블에 데이터 Insert
 INSERT INTO biz_item_comps(biz_item_comps_uid,version_uid,biz_item_uid,mng_item_cd) VALUES 
('124719','1498','12624','GF'),
('124730','1498','12624','PF'),
('124741','1498','12624','ST');

COMMIT:

-- Case When 구문을 사용한 데이터 Insert
SET @v_item_Cd = 'ITEM2060';
INSERT INTO biz_item_comps_repl
SELECT * 
  FROM biz_item_comps bic
 WHERE bic.version_uid = '1498'
   AND bic.biz_item_uid = '12624'
   AND bic.mng_item_cd = CASE WHEN @v_item_cd = 'ITEM2037' THEN 'ST'
                              WHEN @v_item_cd = 'ITEM2039' THEN 'PF'
                              WHEN @v_item_cd = 'ITEM2060' THEN 'GF'
                         ELSE NULL END;

-- Query 호출시 아래의 SQL Error[1292][22001] 에러 발생
SQL Error[1292][22001]: Data truncation: Truncated incorrect INTEGER value: 'GF'

 

AWS Aurora MySQL Error 원인 및 조치 사항

MySQL Bug 로 AWS Case Open 결과 버그 패치는 현재까지 따로 없음
 - Case When 구문 조건 사용 시 varchar 타입을 integer 타입으로 잘못 인식하여 Error 발생

CONCAT 함수를 이용하여 수동으로 varchar 타입으로 변경하여 Error 해결

-- AWS Case Open 결과 버그 패치 또는 파라미터 변경에 대한 가이드가 없으므로 
-- 아래와 같이 concat 함수를 이용하여 varchar 타입으로 수동 변경
-- concat 함수가 아닌 다른 방식으로 varchar 으로 변경 가능

SET @v_item_Cd = 'ITEM2060';
INSERT INTO biz_item_comps_repl
SELECT * 
  FROM biz_item_comps bic
 WHERE bic.version_uid = '1498'
   AND bic.biz_item_uid = '12624'
   AND bic.mng_item_cd = CONCAT(CASE WHEN @v_item_cd = 'ITEM2037' THEN 'ST'
                              WHEN @v_item_cd = 'ITEM2039' THEN 'PF'
                              WHEN @v_item_cd = 'ITEM2060' THEN 'GF'
                         ELSE NULL END);

 

▶ DBTechBiz 끄적끄적
Oracle 의 경우 SR 을 진행하면 버그 패치를 제작하여 배포해주지만, AWS 의 Aurora MySQL 은 현재까지 버그 이슈로 인해 3개의 Case Open 을 진행하였지만 따로 버그 패치는 제공해 주지 않으며 대부분 직접 해결하였다.

반응형

댓글