【问题标题】:Syntax error or access violation: 1055 'wockhardt_indigo.stock_levels.id' isn't in GROUP BY语法错误或访问冲突:1055 'wockhardt_indigo.stock_levels.id' 不在 GROUP BY 中
【发布时间】:2016-09-08 11:52:27
【问题描述】:

我最近开始收到以下语句的错误

Model::select(DB::raw('*, SUM(`unrestrict`) as sumUnrestrict, SUM(`quarantine`) as sumQuarantine'))->with(['materialDescription'])->orderBy('mat_no')->groupBy('mat_no')->get();

错误是

Syntax error or access violation: 1055 'wockhardt_indigo.stock_levels.id' isn't in GROUP BY

有什么解决办法吗? TIA

【问题讨论】:

    标签: mysql laravel group-by eloquent


    【解决方案1】:

    您必须明确指定您需要的列,并且这些列必须与分组中的列匹配,例如:

    Model::select(DB::raw('mat_no,  
    SUM(`unrestrict`) as sumUnrestrict, 
    SUM(`quarantine`) as sumQuarantine'))->
    with(['materialDescription'])->
    orderBy('mat_no')->
    groupBy('mat_no')->get();
    

    【讨论】:

    • 是的,但是我需要所有的列,否则当我只需要其中的 1 个列时恢复所有列的效率会稍低:P 我已经通过禁用 Laravel 中的严格 SQL 标志解决了这个问题。这似乎是许多用户面临的问题,请参阅github.com/laravel/framework/issues/14997
    • @MichaelBrewster 。如果你需要很多列,你应该在 group by 中设置正确的列..
    【解决方案2】:

    似乎是 Laravel 框架中的一个问题。 Laravel 5.3 开启了 SQL 中的严格模式,这在 Eloquent 中效果不佳,在 config/database.php 中更改为 false 解决了解决方案并恢复了 5.2 的行为。

    【讨论】:

      猜你喜欢
      • 2017-04-16
      • 2018-05-31
      • 2022-01-21
      • 2017-07-31
      • 2019-06-06
      • 2020-06-16
      • 2017-02-01
      • 2017-04-01
      • 2021-11-13
      相关资源
      最近更新 更多