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 을 진행하였지만 따로 버그 패치는 제공해 주지 않으며 대부분 직접 해결하였다.
반응형
댓글