>백엔드 개발 >PHP 튜토리얼 >Laravel WhereIn 및 GroupBy: '1055 오류'를 해결하는 방법?

Laravel WhereIn 및 GroupBy: '1055 오류'를 해결하는 방법?

Barbara Streisand
Barbara Streisand원래의
2024-12-08 03:21:11843검색

Laravel WhereIn and GroupBy: How to Resolve the

Laravel: WhereIn 및 GroupBy 쿼리의 '1055 오류' 이해

문제:

Laravel에서 다음과 같은 단일 쿼리 결과에서 WhereIn 및 GroupBy 절을 모두 활용합니다. 오류:

SQLSTATE[42000]: Syntax error or access violation: 1055 'sbrtpt.loading.id' isn't in GROUP BY

설명:

기본적으로 Laravel의 데이터베이스 구성은 엄격한 SQL 모드를 적용합니다. 이는 WHERE 절에서 참조되는 모든 열이 다음에도 나타나도록 요구합니다. 쿼리에 GROUP BY 작업이 포함된 경우 GROUP BY 절. 이 특별한 경우 id 열은 WhereIn 절에는 포함되지만 GroupBy 절에는 포함되지 않아 오류가 발생합니다.

해결책:

두 가지 가능한 해결 방법이 있습니다. 이 문제를 해결하려면:

옵션 1: Strict 비활성화 모드

엄격 모드를 비활성화하려면 config/database.php 파일로 이동하여 다음과 같이 mysql 배열 설정을 수정합니다.

'mysql' => [
    ...
    'strict' => false,
    ...
]

엄격 모드를 false로 설정하면 효과적으로 모든 엄격 모드 규칙을 비활성화합니다.

옵션 2: 특정 지정 모드

또는 문제를 일으키는 특정 규칙만 비활성화하면서 엄격 모드를 유지하려면 config/database.php의 'mysql' 배열 내에서 'modes' 옵션을 수정하세요. 예를 들어 ONLY_FULL_GROUP_BY 모드를 비활성화하려면 다음 줄을 추가합니다:

'modes' => [
    // Disable this to allow grouping by one column
    'ONLY_FULL_GROUP_BY',
    // Other strict mode options
]

추가 정보:

일반적으로 두 번째 옵션을 활용하는 것이 좋습니다(특정 항목 지정). 모드) 엄격 모드의 이점을 유지하면서 필요한 엄격 모드 규칙만 비활성화할 수 있기 때문입니다. 특정 데이터베이스 관리 시스템(예: MySQL)에 대한 문서를 검토하여 이 오류를 처리하는 데 적합한 추가 모드를 결정할 수 있습니다.

위 내용은 Laravel WhereIn 및 GroupBy: '1055 오류'를 해결하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.