Laravel 中的「語法錯誤或存取衝突:1055」問題排查
在同一查詢中使用WhereIn 和GroupBy 時,您可能會遇到錯誤,例如「SQLSTATE[42000]:語法錯誤或存取衝突:1055」。這表示違反了 SQL 要求在 GROUP BY 子句中包含所有非聚合列的要求。
要解決此問題,有兩個選項。
停用嚴格模式
在 config/database.php 檔案中的 'mysql' 陣列下,將 'strict' 設為 錯誤的。這將禁用所有嚴格模式設定。
指定允許的嚴格模式
或者,您可以將 'strict' 保留為 true 並將特定模式新增至 'modes' 選項。若要允許按一列進行分組而不將其包含在 GROUP BY 子句中,請註解掉 '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' ], ]
您可以繼續使用WhereIn 和 GroupBy 而不會遇到「1055」錯誤。
注意:為了安全和數據,建議使用嚴格模式誠信原因。但是,對於需要按非聚合列分組的查詢,您可能需要暫時停用它。
以上是使用WhereIn和GroupBy時如何修復Laravel的「語法錯誤或存取衝突:1055」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!