Mysql 을 사용중인데 아래와 같은 에러가 발생했다.
this is incompatible with sql_mode=only_full_group_by
찾던 중에 mysql 공식 홈페이지에서 이와 같은 글을 발견했다.
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
정리하면 5.7 Version에서는 sql_mode 항목이 생겼으며 그 옵션 안에 only_full_group_by 내용이 존재함에 따라 발생되는 부분이라고 설명되어 있다.
해결법
쿼리 수정
SELECT ID,NAME,MAX(AGE) FROM TEST GROUP BY ID;
이 쿼리는 에러가 나는 쿼리이고
Name의 값을 groupby 에서 정할수 있도록 집계함수 등을 추가해주면 된다.
sql_mode 변경
SELECT @@sql_mode;
로 현재 sql_mode를 확인하고,
@@sql_mode
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
이렇게 결과가 나오는데 ONLY_FULL_GROUP_BY 값이 들어가있어서 에러가 발생한다.
지워주면 된다.
- 현재 세션에서만 지우기
SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
위에 출력에서 지운 텍스트로 set 해준다.
- 전체 지우기
my.cnf 파일을 변경한다.
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
로 값을 추가해주면 된다.
'IT > Database' 카테고리의 다른 글
[Mysql] 문자를 숫자로 변환하는 방법(CAST / CONVERT) (15) | 2024.05.21 |
---|---|
[Mysql] WEEK 관련 함수 (YEARWEEK, WEEKDAY) (11) | 2024.05.16 |
[Mysql] 그룹함수 사용법 (with 로 사용) (38) | 2024.04.17 |
[Mysql] [Error] 1075 // auto increment 관련 오류 (19) | 2024.04.13 |
[Mysql] Log 설정 (general, slow_query, binary ..) (12) | 2024.04.01 |
댓글