PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > Laravel教程 > 正文

    Laravel : Syntax error or access violation: 1055 Error

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:publicfunctionuploads($count){$items=\DB::table('article')->select('pcode.name',\DB::raw('count(*)asupload_cou...
    1. public function uploads($count
    2.     { 
    3.         $items = \DB::table('article'
    4.             ->select('pcode.name', \DB::raw('count(*) as upload_count')) 
    5.             ->leftJoin('pcode''article.organization_id''=''pcode.id'
    6.             ->where([ 
    7.                 ['pcode.type''='"organization_type"], 
    8.                 ['article.status''=', 1] 
    9.             ]) 
    10.             ->groupBy('organization_id'); 
    11.         return $items->paginate($count); 
    12.     } 


    上面这样一段代码, 测试服务器很好, 上线后报错了.

    Syntax error or access violation: 1055 Error : MySQL : isn't in GROUP BY
    云云

    后来Google了一下说是sql_mode设置导致的问题, 修改 config/database.php这个配置 strict => false

    1. 'mysql' => [ 
    2.     'driver' => 'mysql'
    3.     'host' => env('DB_HOST''localhost'), 
    4.     'port' => env('DB_PORT''3306'), 
    5.     'database' => env('DB_DATABASE''forge'), 
    6.     'username' => env('DB_USERNAME''forge'), 
    7.     'password' => env('DB_PASSWORD'''), 
    8.     'charset' => 'utf8'
    9.     'collation' => 'utf8_unicode_ci'
    10.     'prefix' => ''
    11.     'strict' => false
    12.     'engine' => null
    13. ], 

    然后试了一下 果然问题解决了 ,然后仔细查阅了一下原因:

    查询mysql 1055错误码发现问题为在mysql的配置中如果设置了sql_mode包含

    ONLY_FULL_GROUP_BY值得话,在进行查询时需要将select的字段都包含在group by 中。
    即 select x,y from xxx group by x,y
    否则就会报错

    总结:

    laravel 5.3 是默认开启 mysql严格模式的.
    mysql在严格模式下, 并且开启了ONLY_FULL_GROUP_BY的情况下,
    group by 的字段没有出现在 select 的语句中会报错.关闭了严格模式就不会报错.
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-153-5556-1.html
    相关热词搜索: