아래 에러는 sql_mode=only_full_group_by 모드에서 쿼리를 실행할 때 발생합니다.
only_full_group_by 모드가 설정되어 있을 때 GROUP BY 절에 있는 열 외에도 SELECT 절에 있는 열에 대한 제약을 부과합니다.
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column '' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
오류 내용 : 이 메시지에서 ' '라는 열이 GROUP BY 절에 포함되지 않았으며, 이 열이 GROUP BY 절에 있는 열에 함수적으로 의존하지 않는다고 나와 있습니다.
오류를 해결하기 위한 방법으로는 크게 2가지 방법이 있습니다.
1. GROUP BY 절에 모든 SELECT 절의 열 추가
2. sql_mode 변경
저는 sql_mode 시스템 변수를 변경을 하였습니다. 이를 통해 SQL 모드를 수정하고 "ONLY_FULL_GROUP_BY"를 제거하거나 추가하는 등의 설정 변경을 수행할 수 있습니다.
처리방법
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
위의 SQL 문은 sql_mode 설정에서 "ONLY_FULL_GROUP_BY" 옵션을 제거하는 쿼리입니다. 이 쿼리를 실행하면 "ONLY_FULL_GROUP_BY" 모드를 비활성화하여 해당 모드의 엄격한 제약을 해제합니다.
따라서 위의 SQL 문을 실행하면 "ONLY_FULL_GROUP_BY" 모드가 비활성화되고, GROUP BY 구문을 사용할 때 SELECT 절에 다른 열을 포함할 수 있게 됩니다.
주의 : 모드를 변경하면 데이터베이스 동작에 영향을 미칠 수 있으며, 일부 쿼리나 애플리케이션에서 예기치 않은 결과가 발생할 수 있습니다. 따라서 모드 변경에 대한 결정을 내리기 전에 주의 깊게 검토하고, 데이터베이스의 다른 부분에 영향을 미칠 수 있는 가능성을 고려해야 합니다.
'개발이야기 > MySQL' 카테고리의 다른 글
[MySQL] LIMIT, OFFSET 사용해서 데이터 검색하고 제한하기 (0) | 2023.09.11 |
---|---|
[MySQL] WITH ROLLUP 사용해서 데이터 합계, 집계 하기 (0) | 2023.09.07 |
[MySQL] JOIN(조인) 설명과 사용법 예제 (INNER, LEFT, RIGHT) (0) | 2023.09.06 |
[MySQL] 위도 경도 값으로 거리 계산하기 (Haversine 공식) (0) | 2023.08.29 |
[MySQL] UNION, UNION ALL 차이점 (Group by, Order by 활용) (0) | 2023.08.02 |
댓글