-
this is incompatible with sql_mode=only_full_group_by└ Mysql 2018. 12. 6. 18:58
운영서버 Mysql 디비 버전(5.6.x)과 로컬 PC Mysql 디비 버전(5.7.18)이 다름.
에러 발생 (A4 한장정도의 Join 쿼리문;)
error massage
SELECT list contains nonaggregated column 'willow.status_cd'; this is incompatible with sql_mode=only_full_group_by
원인
The query is invalid if
name
is not a primary key oft
or a uniqueNOT NULL
column. In this case, no functional dependency can be inferred and an error occurs:mysql> SELECT name, address, MAX(age) FROM t GROUP BY name; ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mydb.t.address' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
관련 URL https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
운영중인 query 를 수정할 수 없는 상황. 그래서 5.7.x 버전에 설정 추가
조치방법1 - 장점 : 운영중에 바로 적용(mysql 프로토콜에서 실행), 단점: DB 재기동하면 재반영
mysql prompt
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
조치방법2 - 장점: 영구적인 설정 my.cnf, 단점: 최초 적용시 서버 재가동 필수
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
'└ Mysql' 카테고리의 다른 글
auto_increment 에 대한 고찰 (Insert, Update) (0) 2018.03.08 권한 부여 권한 제거 (0) 2015.11.13 localhost vs 127.0.0.1 (0) 2015.02.13