반응형
AWS-RDBS for MariaDB에서 어느 시점부터 발생 재귀 쿼리 일부에서 발생(? 데이터 속성 탓인가)
ERROR 1406 (22001): Data too long for column 'str' at row 1
계층형(재귀) 쿼리에서 UNION을 통한 비특정 데이터 연결하는 과정에서 데이터 속성의 길이가 달라서 발생
오라클은 이런 건 없었던 것 같은데😥
비엄격 SQL 모드에서는 괜찮지만, 엄격 SQL모드에서는 오류 발생(STRICT_TRANS_TABLES 모드 활성화 시)
-- 발생 소스
WITH RECURSIVE cte AS
(
SELECT 1 AS n, 'abc' AS str
UNION ALL
SELECT n + 1, CONCAT(str, str) FROM cte WHERE n < 3
)
SELECT * FROM cte;
문제 해결 방법은 데이터 길이를 맞춰야 함(데이터 길이 확인 후 넉넉하게 설정 - 부족할 경우 글자 잘림)convert 함수를 통해 데이터 유형 변경
WITH RECURSIVE cte AS
(
SELECT 1 AS n, CONVERT('abc', VARCHAR(20)) AS str
UNION ALL
SELECT n + 1, convert(CONCAT(str, str), VARCHAR(20)) FROM cte WHERE n < 3
)
SELECT * FROM cte;
WITH RECURSIVE cte AS
(
SELECT 1 AS n, CONVERT('abc', VARCHAR(20)) AS str
UNION ALL
SELECT n + 1, convert(CONCAT(str, str), VARCHAR(20)) FROM cte WHERE n < 10 -- 반복문 증가
)
SELECT * FROM cte;
참고
반응형
'Dev > DataBase' 카테고리의 다른 글
[MariaDB] 데이터 백업(mysqldump, mariabackup) (0) | 2023.02.14 |
---|---|
[MariaDB] ERROR 1267 illegal mix of collations ... (0) | 2023.01.16 |
ORACLE/MYSQL timestamp 구하기 (0) | 2022.08.18 |
ORA-14551: cannot perform a DML operation inside a query (0) | 2022.08.18 |
MySQL ERROR 1231 "NO_AUTO_CREATE_USER" (0) | 2022.04.06 |