【问题标题】:Laravel GroupBy work in mysql but throws error in MariaDBLaravel GroupBy 在 mysql 中工作,但在 MariaDB 中抛出错误
【发布时间】:2021-04-05 23:26:28
【问题描述】:

我在 MySQL (5.7.21) 数据库中运行以下查询没有任何问题,但此查询在我的托管服务器数据库 MariaDB (10.1.47-MariaDB) 上引发错误,我没有超级权限更改sql mode

$projects =  V2Project::leftJoin('v2_project_locations as v2pl', 'v2pl.project_id', 'v2_projects.id')
             ->leftJoin('v2_locations as v2l', 'v2l.id', 'v2pl.location_id')
             ->selectRaw('v2_projects.id, v2_projects.name, group_concat(v2l.name) as locations')
             ->withDepartmentInMind()
             ->onlyAuthorizedObjects();

if($by_current_step == true) {
    $projects = $projects->where('current_step', 'plan');
}

if($search_val) {
    $projects = $projects->whereIn('v2_projects.id', $search_val);
}

$projects = $projects->groupBy('v2_projects.id')->paginate(10); 
$projects->appends(Input::except('page', '_token'));

错误:

SQLSTATE[42000]: Syntax error or access violation: 1055 'pm_form_moe.v2_projects.name' isn't in GROUP BY (SQL: select v2_projects.id, v2_projects.name from `v2_projects` group by `v2_projects`.`id`)

我也尝试添加每一列,但我需要与 mySQL 相同的功能而不添加所有列。

【问题讨论】:

标签: php mysql laravel mariadb


【解决方案1】:

阅读ONLY_FULL_GROUP_BY,然后决定从SELECT 中删除什么或向GROUP BY 添加什么。不用担心设置标志;您的代码很糟糕,需要修复。而且老版本不抱怨的时候就不好了。

(如果您向我们展示生成的 SQL,我们可以进一步讨论。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2021-12-14
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    相关资源
    最近更新 更多