Laravel の「構文エラーまたはアクセス違反: 1055」のトラブルシューティング
同じクエリで WhereIn と GroupBy を使用すると、 「SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1055」などのエラー。これは、すべての非集計列を GROUP BY 句に含めるという SQL の要件に違反していることを示しています。
この問題を解決するには、2 つのオプションがあります。
厳密モードを無効にする
config/database.php ファイルの「mysql」配列の下で、次のように設定します。 'strict' を false に設定します。これにより、すべての厳密モード設定が無効になります。
許可される厳密モードを指定する
または、'strict' を true のままにして、特定のモードを 'modes' オプションに追加することもできます。 。 GROUP BY 句に含めずに 1 つの列によるグループ化を許可するには、「ONLY_FULL_GROUP_BY」モードをコメント アウトします。
'mysql' => [ ... 'strict' => true, 'modes' => [ // 'ONLY_FULL_GROUP_BY', // Disable this to allow grouping by one column 'STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_AUTO_CREATE_USER', 'NO_ENGINE_SUBSTITUTION' ], ]
「1055」エラーが発生することなく、引き続き WhereIn と GroupBy を使用できます。
注: セキュリティとデータのために厳密モードを使用することをお勧めします誠実さの理由。ただし、非集計列によるグループ化が必要なクエリの場合は、一時的に無効にする必要がある場合があります。
以上がWhereIn と GroupBy を使用する際の Laravel の「構文エラーまたはアクセス違反: 1055」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。