문제:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!