-
[mysql] ERROR 1055... which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_byDatabase/mysql 2021. 6. 10. 15:33
mysql에서 날짜별 통계 관련 쿼리문을 작성할때
group by를 자주 사용하게 된다.
평소에 하던대로 쿼리를 짜서 콘솔에 테스트를 해보니
아래와 같은 에러가 발생했다.
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
에러 원인은
'only_full_group_by' 때문이다.
그래서 쿼리문을 수정하던지, 아니면 없애면 된다.
없애는법
sql_mode 값을 확인해보자.
mysql> SELECT @@sql_mode;
ONLY_FULL_GROUP_BY를 제거하면 된다.
제거방법
mysql> SET SESSTION sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; mysql> SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
다시 확인해보면 사라져있다.
이제 문제없이 동작된다.
설정 파일을 통한 영구적 변경 방법
$ nano /etc/my.cnf ... [mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ... ...
'Database > mysql' 카테고리의 다른 글