미스터 역마살
[Mysql 에러] Truncated incorrect INTEGER value : 'AWS' 본문
[Mysql 에러] Truncated incorrect INTEGER value : 'AWS'
Mr. YeokMaSsal 2022. 7. 31. 12:53
에러 발생 상황
Truncated incorrect INTEGER value : 'AWS' 에러 발생 상황
S전자 보안포털 사이트에서 On-premise → AWS RDS로 이전을 한것에 대한 테스트를 하던 와중 Truncated incorrect INTEGER value라는 에러가 발생하였다. 해당 에러가 발생한 조회조건을 봤는데 컬럼 타입이 모두 VARCHAR로 INTEGER와는 전혀 무관한 타입이었다.
구글링을 해봐도 버그라는 내용만 나오고 당최 이유를 알지 못했다. 그러던 와중에 파라미터값을 SELECT 절로 조회 할 수 있었다.
-- 일반적인 방법
show variables;
-- 이것도 가능
select @@global.sql_mode;
하지만 이렇게 조회할 경우 서로 다른 값이 나왔다. 너무 황당해서 일단 다른 이유는 차차 찾기로 하고 이부분을 고치기로 했다.
에러 원인
에러의 원인은 기존 On-premisse의 파라미터 속성 sql_mode에는 STRICT_TRANS_TABLES 라는 값이 포함되어 있으나 select절로 조회한 결과에는 빠져있었다. 따라서 현재 On-premisse에는 STRICT_TRANS_TABLES이 적용되어 있지 않은 것이었다. 그럼 STRICT_TRANS_TABLES는 무엇이냐?
해당 옵션값은 데이터에 빈공간이 존재하면 에러를 뱉는 그런 옵션인듯 했다. 실제 쿼리에서 에러가 나던 부분을 TRIM 함수로 감싸주게 되면 에러가 나지 않았다.
참고 : https://xinet.kr/?p=2191
해결 방법
일단 RDS의 sql_mode 옵션을 변경하기로 했다. 그리고 2차적으로 On-premise에 있는 파라미터 옵션들을 모두 select 절로 조회하여 show variables 했을때와 차이가 있는지 확인 하는 작업이 필요했다.
'Database > MYSQL' 카테고리의 다른 글
Mysql DBA 업무 SQL (0) | 2022.08.01 |
---|---|
Mysql InnoDB (0) | 2022.07.31 |
[Mysql 에러] This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable) (0) | 2022.07.31 |
[Mysql 에러] THE TOTAL NUMBER OF LOCKS EXCEEDS THE LOCK TABLE SIZE (0) | 2022.07.31 |
캐릭터 셋 바꾸는 방법 (0) | 2022.07.31 |