如何解决 Laravel Eloquent 查询错误:与 sql_mode=only_full_group_by 不兼容?

Patricia Arquette
发布: 2024-10-18 12:17:02
原创
450 人浏览过

How to Resolve Laravel Eloquent Query Error: Incompatible with sql_mode=only_full_group_by?

Laravel Eloquent 查询错误:与 sql_mode=only_full_group_by 不兼容

在涉及 Laravel Eloquent 查询的某些场景中,您可能会遇到一条错误消息,指出:

<code class="text">SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1
of SELECT list is not in GROUP BY clause and contains nonaggregated
column 'myshop.products.id' which is not functionally dependent on
columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by</code>
登录后复制

此错误是由 MySQL 严格模式引起的,该模式要求 SELECT 列表中的所有列都进行分组或聚合。

解决方案:禁用 MySQL 严格模式

此问题最简单、最有效的解决方案是在数据库连接设置中禁用 MySQL 严格模式。这可以通过将以下配置添加到您的database.php文件来实现:

<code class="php">'connections' => [
    'mysql' => [
        // Behave like MySQL 5.6
        'strict' => false,

        // Behave like MySQL 5.7
        'strict' => true,
    ]
]</code>
登录后复制

将“strict”设置为“false”将允许您的查询在没有sql_mode=only_full_group_by施加的约束的情况下执行。

高级配置

有关 MySQL 严格模式行为的更多微调控制,您可以参考 Matt Stauffer 关于该主题的博客文章:

<code class="text">https://mattstauffer.com/blog/mysql-config-for-laravel-developers</code>
登录后复制

以上是如何解决 Laravel Eloquent 查询错误:与 sql_mode=only_full_group_by 不兼容?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!