zoukankan      html  css  js  c++  java
  • 解决laravel出现Syntax error or access violation: 1055 '***' isn't in GROUP BY

    laravel 5.3 以后默认开启 mysql严格模式(strict)
    mysql在严格模式下, 并且开启了ONLY_FULL_GROUP_BY的情况下,
    group by 的字段没有出现在 select 的语句中会报错.关闭了严格模式就不会报错.

    如下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,
    ],

    原创:https://phpartisan.cn/news/77.html
  • 相关阅读:
    21.网络文件共享服务
    20.LANMP架构
    18.自动运维工具ansible
    17.MySQL数据库
    16.DNS服务
    15.系统自动部署
    14.加密技术和安全
    13.系统启动和服务管理
    12.进程管理和计划任务
    11.网络管理和配置
  • 原文地址:https://www.cnblogs.com/niuben/p/11138090.html
Copyright © 2011-2022 走看看