资讯专栏INFORMATION COLUMN

Laravel : Syntax error or access violation: 1055 E

sean / 2313人阅读

摘要:即否则就会报错总结是默认开启严格模式的在严格模式下并且开启了的情况下的字段没有出现在的语句中会报错关闭了严格模式就不会报错

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/46995.html

相关文章

  • <em>Laravelem>5.5执行表迁移命令出现表为空的解决方案

    摘要:今天在使用一个第三方包时,出现了这样的错误折腾了好久,终于知道了解决方法,原来是配置文件的缓存没有清理。一问题错误提示二解决方案清除配置文件缓存再次执行发布命令,就可以了 今天在使用一个第三方包 laravel-admin 时,出现了这样的错误:SQLSTATE[42000]: Syntax error or access violation: 1103 Incorrect table...

    tolerious 评论0 收藏0
  • <em>Laravelem> 5.4 migrate时报错: Specified key was too long

    摘要:默认使用字符编码,而不是之前的编码。这也应该就是改用字节长度的字符编码的原因之一。不过要注意的是,只有版本以后才开始支持字符编码查看版本。注如果是从升级到,不需要对字符编码做切换。 Laravel 5.4默认使用utf8mb4字符编码,而不是之前的utf8编码。因此运行php artisan migrate 会出现如下错误: [IlluminateDatabaseQueryExcept...

    MarvinZhang 评论0 收藏0
  • <em>Laravelem> Mysql SQLSTATE[42000]: <em>Syntaxem> <em>err<em>orem>em> <em>orem> acc

    摘要:在非严格模式,可以接受该日期,但会生成警告在严格模式,在或过程中,如果被零除或,,则产生错误否则为警告。如果未给出该模式,被零除时返回。如果用到或中,生成被零除警告,但操作结果为。模式严格模式,进行数据的严格校验,错误数据不能插入,报错误。 使用laravel框架进行mysql操作时,进行sum查询的时候出现这样的错误 SQLSTATE[42000]: Syntax error or ...

    y1chuan 评论0 收藏0
  • MySQL数据表合并去重

    摘要:场景爬取的数据生成数据表,结构与另一个主表相同,需要进行合并去重解决直接举例首先创建两个表,,其中是主表然后向中插入两条数据,中插入一条与中相同的一条数据将的数据插入中分组去重创建新的临时表注意创建完这个表的字段类型已经不是主键自增可能也会 场景: 爬取的数据生成数据表,结构与另一个主表相同,需要进行合并+去重 解决:(直接举例) 首先创建两个表pep,pep2,其中pep是主表 ...

    Genng 评论0 收藏0
  • sql_mode=only_full_group_by

    摘要:今天同事重新安装的环境登陆的时候就提示报错信息如下简单解释一下就是我要查的列是非聚合的,这违背了的模式。这里就不贴数据表结构和语句了,只是简单解释一下错误原因。解决思路修改代码版本回退修改配置文件 今天同事重新安装的环境MySQL登陆的时候就提示报错信息如下: SQLSTATE[42000]: Syntax error or access violation: 1055 Express...

    104828720 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<