최근 직장에서 문제가 발생했습니다.
저희 시스템의 일부 논리적 처리가 저장 프로시저를 사용하여 구현되었지만 어느 날 고객 서비스에서 주문과 관련된 기본 제품 리소스를 확인한 후 주문이 실패했다고 보고했습니다. 문제없었어요.
주문을 하는 저장 프로시저에는 두 줄의 코드가 있습니다.
1 declare _err int default 0;2 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;3 DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' set _err=2;
저장 프로시저를 실행한 후 변수 _err은 1을 반환합니다. 저장 프로시저를 디버그하여 문제를 찾을 수만 있습니다. 다음 문단을 디버깅해 보니 이 sql을 실행한 후 _err이 1
1 select group_concat(concat(@room_name,',',run_date,',',total_count) separator '|') into @order_desc from tmp_order_detail order by run_date;
이 된 것을 발견했습니다. 임시 테이블 tmp_order_detail에 데이터가 많아서 group_concat 문제인 줄 알고 The 임시 테이블의 데이터가 절반으로 줄어들었고 성공한 것으로 확인되어 group_concat에 길이 제한이 있는지 추측하고 구글링을 해보니 사실이었다.
group_concat 함수 정보:
group_concat: 기본 연결 가능한 길이는 1024입니다. 최대 길이가 설정된 경우 이 길이를 초과하면 이 길이로 잘립니다.
쿼리에서(선택) ) 문, group_concat을 사용한 후에는 제한이 무효화됩니다.
1,
MySQL 구성 파일 수정: #需要设置的长度
group_concat_max_len = 5120
SET GLOBAL group_concat_max_len=5120;SET SESSION group_concat_max_len=5120;
저장 프로시저에서 위의 두 번째 방법을 채택하여 저장 프로시저를 실행했습니다. OK, 성공!
퇴근하세요 (오늘은 일요일이에요)! ! !
위 내용은 MySQL에서 group_concat() 함수를 사용하는 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!