본문 바로가기
데이터베이스/MySQL, MariaDB

[Error Code: 1055] MySQL Group By 에러코드

by 배추잠자리 2021. 5. 20.
반응형

 

Error Code 1055

MySQL에서 그룹바이를 하다보면 1055 에러를 마주하고는 한다.

이중화 서버 혹은 데모서버 실서버를 각각 두고 사용하는 경우에서는

 

다른 MySQL 서버에서는 잘 돌아가는 쿼리가

또 다른 서버에서는 1055 에러를 뱉는 경우가 있다.

 

MySQL 5.7.5 버전기준 이후부터,

[선택 목록, 조건 또는 목록이 절에 이름이 지정되지 않은 집계되지 않은 열을 참조하는 쿼리를 허용하지 않습니다] 

라고 정의가 변경되었습니다 !

 

 

▶ 해결방안1. 워크벤치에서 쿼리 날리기

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

이 쿼리를 날리는 것은 즉,

그룹바이의 규칙을 5.7.4 버전 이전의 기준으로

돌리는 것으로 생각하시면 됩니다 !

 

 

▶ 해결방안2. 그룹바이 절에 Select네임 명명해주기

Error 1055에서 명명해줄 부분

 

에러코드에서 뱉어주는 nonaggregated column '컬럼명' 을 그룹바이 절에 명시해주면 해결됩니다.

 

 

예를 들어

Error Code: 1055. Expression
#1 of SELECT list is not in GROUP BY clause
and contains nonaggregated column 'A.testName' which is not functionally
dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_b

라는 에러 코드를 뱉었다면, 해당 쿼리의 그룹바이 절에 A.testName 를 추가해주면 됩니다.

 

하위 버전의 MySQL을 사용하다가 5.7.5 이상의 버전으로 변경되었을때는 모든 그룹바이의 쿼리를 바꿔주기는

방대하기때문에 첫번째 방안을 활용하면 좋을 것 같습니다.

 

개인적으로 오라클 포스트그레스큐엘 티베로 MySQL 등등 다양하게 써보았지만, 오라클을 제외한 몇몇 DB들은

' 이게돌아가..? ' 할정도로 Group by 나 join에 대해서 규칙이 난해한 경우가 많은것같다 ... !

 

▶ 참고문서

MySQL :: MySQL 5.7 Reference Manual :: 12.20.3 MySQL Handling of GROUP BY

반응형

댓글