Laravel : Syntax error or access violation: 1055 Error?

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
云云

后来Google了一下说是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,
],

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

查询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 的语句中会报错.关闭了严格模式就不会报错.


帝国金的菜园子
分享一些工作学习中的经验
188 声望
3 粉丝
0 条评论
推荐阅读
win10 docker laradock 搭建PHP“简易”开发环境
安装windows版本docker,并且安装,这里我选择使用hyperV【官网】:[链接]下载laradock【github】:[链接] {代码...} 进入laradock文件夹复制.env.example到.env打开.env,按需进行一些调整,比如: {代码...} 按...

小金子阅读 469

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目,提交PR,提高竞争力。早日上岸,升职加薪。知识点详解秒杀系统架构图秒杀流程图秒杀系统设计这篇文章一万多...

王中阳Go33阅读 2.5k评论 1

封面图
万字长文~vue+express+mysql带你彻底搞懂项目中的权限控制(附所有源码)
所谓的权限,其实指的就是:用户是否能看到,以及是否允许其对数据进行增删改查的操作,因为现在开发项目的主流方式是前后端分离,所以整个项目的权限是后端权限控制搭配前端权限控制共同实现的

水冗水孚11阅读 1.5k

花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

民工哥11阅读 1.1k

封面图
一次偶然机会发现的MySQL“负优化”
今天要讲的这件事和上述的两个sql有关,是数年前遇到的一个关于MySQL查询性能的问题。主要是最近刷到了一些关于MySQL查询性能的文章,大部分文章中讲到的都只是一些常见的索引失效场合,于是我回想起了当初被那个...

骑牛上青山8阅读 2.3k评论 2

Laravel 配合 jwt 使用
测试使用的是Laravel5.5版本。安装 {代码...} 配置生成配置 {代码...} auth配置 {代码...} 编码控制器: {代码...} 路由:此处注意,我为了方便测试,使用了get方法,生产环境不建议使用get。 {代码...} 测试一下...

开源到1阅读 3.2k

2023最新MySQL高频面试题汇总
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

程序员大彬3阅读 1k

188 声望
3 粉丝
宣传栏