본문으로 바로가기

sql_mode=only_full_group_by 에러 해결방법

category MYSQL 2023. 4. 26. 11:07
반응형

- Mysql 5.7 이상 버전에서 발생하는 Group by 에러

- 5.7 이상 버전으로 올라가면서 sql_mode 항목이 생겼으며 5.7 아래 버전으로 사용중이라면 크게 상관없다.

- 처리방법엔 설정파일 수정 및 해당 쿼리문 수정 

- 해당 옵션을 사용 시 해당 쿼리문에는 GROUP BY 절에 에러가 발생하는 Column을 추가

 

처리방법 (설정)

1. Mysql sql_mode 설정상태 확인

select @@sql_mode;

 SELECT 결과물

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

2. 해당 서버 내 mysql 설정파일 [ my.cnf ] 수정 및 추가 

- my.cnf Path :   /etc/my.cnf ,   /etc/mysql/mysqld.cnf  , /etc/mysql/mysql.conf.d/mysqld.conf

- ONLY_FULL_GROUP_BY 설정 제거

[mysqld] 항목 아래 추가 및 수정
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

2-1 

- SQL 문으로 수정

첫번째, SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

두번째, SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

세번째, SET @@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

 

3. Mysql 재시작

service mysql restart

 

 

반응형