首頁 >後端開發 >php教程 >使用WhereIn和GroupBy時如何修復Laravel的「語法錯誤或存取衝突:1055」錯誤?

使用WhereIn和GroupBy時如何修復Laravel的「語法錯誤或存取衝突:1055」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-09 09:51:07381瀏覽

How to Fix Laravel's

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn