MySQL에서 ONLY_FULL_GROUP_BY는 GROUP BY 절에 포함되지 않은 컬럼을 SELECT할 때 오류를 발생시키는 SQL 모드입니다. 데이터의 일관성을 높여주지만, 기존 쿼리가 동작하지 않는 원인이 되기도 합니다. 이 글에서는 이 모드를 활성화하고 비활성화하는 방법을 알아보겠습니다.
ONLY_FULL_GROUP_BY 활성화하기
SET 명령어를 사용하면 간단하게 ONLY_FULL_GROUP_BY 모드를 활성화할 수 있습니다.
mysql> SET sql_mode = 'ONLY_FULL_GROUP_BY';
Query OK, 0 rows affected (0.01 sec)
위와 같이 SET 명령어를 실행하면 현재 세션에서 ONLY_FULL_GROUP_BY 모드가 적용됩니다.
ONLY_FULL_GROUP_BY 비활성화하기
반대로 이 모드를 비활성화하려면 REPLACE 함수를 활용해 sql_mode 값에서 해당 옵션만 제거하면 됩니다.
mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Query OK, 0 rows affected (0.04 sec)
위 쿼리는 현재 설정된 sql_mode에서 'ONLY_FULL_GROUP_BY' 문자열만 제거하고 나머지 모드는 그대로 유지합니다. 실행이 완료되면 ONLY_FULL_GROUP_BY가 성공적으로 비활성화됩니다.
추가 팁: 현재 SQL 모드 확인하기
현재 적용된 sql_mode 값을 확인하려면 다음 쿼리를 사용하세요.
mysql> SELECT @@sql_mode;
또한 위의 SET GLOBAL 방식은 서버 재시작 시 초기화됩니다. 설정을 영구적으로 유지하려면 MySQL 설정 파일(my.cnf 또는 my.ini)의 [mysqld] 섹션에서 sql_mode 값을 수정한 후 서버를 재시작하는 것이 좋습니다.