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中文网其他相关文章!