"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL Strict 모드로 인해 Laravel Eloquent에서 \"SELECT 목록의 표현식 #1이 GROUP BY 절에 없습니다\" 오류를 수정하는 방법은 무엇입니까?

MySQL Strict 모드로 인해 Laravel Eloquent에서 \"SELECT 목록의 표현식 #1이 GROUP BY 절에 없습니다\" 오류를 수정하는 방법은 무엇입니까?

2024-11-08에 게시됨
검색:465

How to Fix \

Laravel Eloquent의 sql_mode=only_full_group_by와 호환되지 않음

"SELECT 목록의 표현식 #1이 GROUP BY 절에 없습니다.. ." 그룹화를 사용하여 Eloquent 쿼리를 실행할 때 MySQL과의 비호환성을 암시합니다. sql_mode=only_full_group_by. 이 문제를 해결하려면:

MySQL 엄격 모드 비활성화

한 가지 해결 방법은 데이터베이스 연결 구성에서 MySQL 엄격 모드 설정을 비활성화하는 것입니다. Laravel의 .env 파일에 다음 줄을 추가하세요:

DB_STRICT_MODE=false

또는 config/database.php 파일에서 엄격 모드를 구성할 수도 있습니다:

'mysql' => [
    // Disable strict mode
    'strict' => false,
],

설명

MySQL 5.7 이상에서 sql_mode=only_full_group_by 모드에서는 SELECT 목록의 모든 열이 GROUP BY 절에 포함되거나 집계된 함수. 제공된 쿼리에서:

$products = Product::where('status', 1)
            ->where('stock', '>', 0)
            ->where('category_id', '=', $category_id)
            ->groupBy('store_id')
            ->orderBy('updated_at', 'desc')
            ->take(4)
            ->get();

열 ID(기본 키)가 SELECT 목록에 나타나지만 GROUP BY 절에는 포함되지 않습니다. 엄격 모드를 비활성화하면 MySQL은 GROUP BY 열에 기능적으로 종속되지 않는 SELECT 목록의 집계되지 않은 열을 허용합니다.

릴리스 선언문 이 글은 1729224679에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3