public function uploads($count) { $items = \DB::table('article') ->select('pcode.name', \DB::raw('count(*) as upload_count')) ->leftJoin('pcode', 'article.organization_id', '=', 'pcode.id') ->where([ ['pcode.type', '=', "organization_type"], ['article.status', '=', 1] ]) ->groupBy('organization_id'); return $items->paginate($count); }
上面这样一段代码, 测试服务器很好, 上线后报错了.
Syntax error or access violation: 1055 Error : MySQL : isn't in GROUP BY
云云php
后来Google了一下说是sql_mode设置致使的问题, 修改 config/database.php
这个配置 strict => false
mysql
'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, ],
而后试了一下 果真问题解决了 ,而后仔细查阅了一下缘由:laravel
查询mysql 1055错误码发现问题为在mysql的配置中若是设置了sql_mode包含
ONLY_FULL_GROUP_BY值得话,在进行查询时须要将select的字段都包含在group by 中。
即 select x,y from xxx group by x,y
不然就会报错sql
总结:服务器
laravel 5.3 是默认开启 mysql严格模式的.
mysql在严格模式下, 而且开启了ONLY_FULL_GROUP_BY的状况下,
group by 的字段没有出如今 select 的语句中会报错.关闭了严格模式就不会报错.测试