laravel 报错SQLSTATE[42000] Syntax error or access violation 1055 'xxx' isn't in GROUP BY

阅读 (518)
查询mysql 1055错误码发现问题为在mysql的配置中如果设置了sql_mode包含ONLY_FULL_GROUP_BY值得话,在进行查询时需要将select的字段都包含在group by 中

查询mysql 1055错误码发现问题为在mysql的配置中如果设置了sql_mode包含ONLY_FULL_GROUP_BY值得话,在进行查询时需要将select的字段都包含在group by 中。
即 select x,y from xxx group by x,y
否则就会报错

但是查看自己的配置my.cnf发现在sql_mode中并没有ONLY_FULL_GROUP_BY这个值

然后去查看Laravel的配置文件,config/database.php,查找mysql的配置,

       'mysql' => [
            'driver' => 'mysql',
            'read' => [
                'host' => env('DB_HOST', '127.0.0.1'),
            ],
            'write' => [
                'host' => env('DB_HOST_WRITE', '127.0.0.1'),
            ],
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'union'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', 'root'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

发现有个strict项,默认为true,开启严格模式,将其修改为false,再次测试发现问题解决,可以输出正确结果

更新于:2020-01-09 17:40:26
返回顶部