this is incompatible with sql_mode=only_full_group_by
-
반응형
최근 MySQL를 새로 설치하고 기존 쿼리를 실행하던 중 발생한 오류입니다.
SQL Error [1055] [42000]: (conn=43) Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'Y.LEDGER_KIND_NAME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
문제가 발생한 쿼리는 다음과 같습니다.
SELECT Y.PARENT_KIND
, Y.LEDGER_KIND_NAME
, SUM(IF('0' = '0', -Y.AMOUNT, Y.AMOUNT)) AS AMOUNT
FROM (
...
) Y
GROUP BY Y.PARENT_KIND
ORDER BY SUM(Y.AMOUNT) DESC
해당 오류는 MySQL 5.7 이상에서 발생할 수 있는 오류입니다.
GROUP BY를 사용할 때, SELECT절, HAVING절, ORDER BY절에 등장하는 컬럼 중에서 집계함수(예: SUM, COUNT 등)로 묶이지 않은 컬럼은 반드시 GROUP BY절에 명시해야 합니다.
위 쿼리에는 Y.LEDGER_KIND_NAME이 집계함수로 묶이지 않아 오류가 발생했습니다.
쿼리를 수정하는 것이 좋겠지만 MySQL 옵션을 변경하여 오류를 해결할 수도 있습니다.
현재 PC는 brew를 통해 MySQL이 설치한 것이 아닌 되어 있지 않아 my.cnf 설정 파일을 찾을 수 없습니다.
Community Server를 통해 직접 설치한 경우, 시스템 설정에서 MySQL을 검색해서 아래와 같이 Configuration을 통해 my.cnf 파일을 설정할 수 있습니다.