본문 바로가기

DB/Mysql

function group_concat [feat.5.7.x]

728x90
반응형

쿼리를 사용하면서 group_concat을 종종 사용하는 경우가 있다.

서브쿼리 사용시 결과를 그룹핑 할때 또는 row의 데이터를 한 결과 값으로 표시하는 경우 사용을 한다.

 

그런데 group_concat에는... 제한이 있다....

 

머 당연한거지만....

 

기본적으로 mysql5.7에서 확인해보면 group_concat 의 값이 1024[1M]로 세팅이 되어 있다.

SHOW VARIABLES LIKE 'group_concat_max_len'; /* 길이 확인 */

group_concat 사용시 데이터 양 및 SEPARATOR에 따라 길이가 길어 질수가 있다... 대부분은 데이터 양이라고 보면 된다.

 

암튼... 이거 때문에 데이터가 짤리다 보니 필요한 정보를 다 가지고 오지 못하는 상황이 발생 ㅜ.ㅜ

 

반응형

이걸 해결 하는 방법은 2가지가 있다.

1. mysql 설정 파일에서 변경해야 한다.. 다만 그러면 서버 재시작은 필수

    my.ini 또는 my.cnf에 group_concat_max_len=4M 부분을 추가 

 

2. 운영중임 상태에서는 set global을 통해서 적용하면 된다. 

SET GLOBAL group_concat_max_len = 1024*5; /* 길이 변경*/
또는
SET GLOBAL group_concat_max_len = 5120; /* 길이 변경*/

위의 방법으로 하면 group_concat 사용시 데이터 짤릴일이 없다...

 

이보다 압서 group_concat을 쓸때 distinct를 사용부터!!!

 

728x90
반응형