ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 of t or a unique NOT 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

    댓글

Designed by Tistory.