본문 바로가기

mySQL

[mySQL][42000][1055]에러 sql_mode=only_full_group_by

반응형

 

[42000][1055] Expression #2 of SELECT list is not in GROUP BY clause and 
contains nonaggregated column 'artiseeDB.user.u_id' which is not functionally dependent on
columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

 

mySQL로 하다보면 이 문제를 꼭 보게 된다..

이 문제를 해결해보자

 

 

[해결 방법]

 

1. cmd 또는 터미널을 연다.

2. mysql을 실행한다.

 

$ mysql -u root -p

 

3. 아래의 명령어를 따라 친다.

 

> show variables like 'sql_mode';

 

  sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
  ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

그럼 이렇게 해당하는 sql_mode가 출력된다.

 

>SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
	ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

 

ONLY_FULL_GROUP_BY를 제외한 나머지로 set 해준다.

 

>exit

 

4. mysql이 아닌 창에서 명령어를 입력해준다.

 

$sudo vi /etc/mysql/mysql.conf.d/mysqld.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'

가 없으면 밑에 추가해주고, 있으면 이렇게 바꿔주도록 한다.

 

5. 재시작한다.

$ sudo service mysql restart

 

 

다시 쿼리를 실행해보면 잘 실행됨을 알 수 있다.

반응형