解决laravel出现Syntax error or access violation: 1055 '***' isn't in GROUP BY报错问题

Song3253 次浏览1个评论2018年02月10日
laravel5.3以后默认开启mysql严格模式(strict),在mysql在严格模式下,并且开启了ONLY_FULL_GROUP_BY的情况下,我们SELECT的字段没有出现在groupby语句中会报错;如何解决呢?只要关闭了严格模式就不会报错。

laravel 5.3以后默认开启mysql严格模式(strict),在mysql在严格模式下, 并且开启了ONLY_FULL_GROUP_BY的情况下,我们SELECT的字段没有出现在group by语句中会报错;如何解决呢?只要关闭了严格模式就不会报错。

如下Demo

public static function orders($phase)
{
    return self::select(DB::raw("SUM(orders) as orders"),"type","users_id","name")
                ->groupBy("type","name")
                ->where("phase",$phase)
                ->get();
}

会出现如下错误,当然*号内的内容是不同的

Syntax error or access violation: 1055 '***' isn't in GROUP BY

解决办法

laravel出现上述错误是sql_mode设置导致的问题,修改config/database.php配置文件的strict => false即可关闭了严格模式:

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', 'localhost'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],
请登录后评论
  • Song Song 2017-07-16 04:00:58

    在不关闭了严格模的情况下有解决方案吗?

    0 赞 0 条评论 回复
    评论
    查看更多评论!
    公告提示
    本站主要用于学习交流Laravel技术,分享Laravel优秀案例;同时非常欢迎大家投稿哦!如果有招聘信息也可以联系我我帮忙发布哦!