리눅스

dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (mysql 오류)

정보 집합 2020. 4. 7. 17:18
반응형

group by 모드에서 특정 컬럼을 지정하지 않았을 경우 

일반적으로는 모든 레코드가 group by 되지만

sql그룹바이 설정에 따라 특정하지 않는경우 금지 할 수 있다.

버전마다 디폴트가 틀리셔 그런것 같다는 추측

 

기존 쿼리가 위와같이 되있다면 일일이 고쳐주기가 쉽지않다.

걍 설정을 바꾸는게 정신건강에 좋다.

 

mysql> select @@sql_mode;

 

sql_mode

ONLY_FULL_GROUP_BY 속성이있다.

제거해 줘야한다.

 

1번 방법 ( sql 내부에서 쿼리로 업데이트 )

1) myql -uroot -p 로 mysql 진입후

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

2) exit ( mysql 재부팅) service mysqld restart 또는 뭐 스크립트 쓰는걸로 shutdown startup

 

이걸로 안될때가 있다 왜안되는겨 잰장 그러면 2번방법으로 

 

 

 

 

2번 방법 mysql 환경설정 파일 수정

my.cnf 파일을 수정한다.(윈도우일경우 my.ini일 수도있다)

위치를 모른다면 sudo find / -name my.cnf

sudo vim /etc/my.cnf (일반적인 위치)

 

아무데나 

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

 

이거 추가 보면 아시다시피 위에 select 한 sql_mode에서 맨앞에 ONLY_FULL_GROUP_BY만 뺀 설정이다.

 

exit ( mysql 재부팅) service mysqld restart 또는 뭐 스크립트 쓰는걸로 shutdown startup

 

반응형