개발이야기/MySQL

[MySQL] sql_mode=only_full_group_by 에러 간단히 해결하기 (sql_mode 변경하기)

후린개발자 2023. 9. 6.
반응형

아래 에러는 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 절에 다른 열을 포함할 수 있게 됩니다.

 

주의 : 모드를 변경하면 데이터베이스 동작에 영향을 미칠 수 있으며, 일부 쿼리나 애플리케이션에서 예기치 않은 결과가 발생할 수 있습니다. 따라서 모드 변경에 대한 결정을 내리기 전에 주의 깊게 검토하고, 데이터베이스의 다른 부분에 영향을 미칠 수 있는 가능성을 고려해야 합니다.

 

에레 메시지

반응형

댓글

💲 추천 글