您的位置: 翼速应用 > 业内知识 > PHP框架 > 正文

分析laravel解决mysql only_full_group_by问题

    让我们从下面介绍如何解决Laravel中的mysql only_full_group_by问题。 希望对有需要的朋友有所帮助!

分析laravel解决mysql only_full_group_by问题1.png

分析laravel解决mysql only_full_group_by问题2.png

    解决这个问题也走了不少弯路,按照网上找的方式一个一个试


    解决思路


    查看 sql_mode

分析laravel解决mysql only_full_group_by问题3.png

    首先查看并修改 mysql 配置文件,my.cnf 很尴尬我的这个里面并没有 ONLY_FULL_GROUP_BY

分析laravel解决mysql only_full_group_by问题4.png

    不行,就接着来,想到mysql 有服务端配置,和客户端配置之分,那就增加 [client] 配置

分析laravel解决mysql only_full_group_by问题5.png

    重启mysql ,在MySQL工具查看 sql_mode,确实显示结果和配置的是一样的,但是程序依然报同样的错


    又是一番查找,突然意识到 global session 的问题,也就是文章头部放的两条查询 sql_mode 的语句,就查询一下 是啥区别

    mysql 变量设置方式分两种,

    一种全局配置,也就是 global,作用于全局;

    一种会话配置 session, 只作用于当前连接


    会不会是laravel 在当前连接设置了 sql_mode

    在 laravel 程序打印 sql_mode

分析laravel解决mysql only_full_group_by问题6.png

    找到了原来是程序设置了


    第一想到 mysql 的配置有一个严格模式,我一直是开启状态,设置为 false 问题顺利解决

分析laravel解决mysql only_full_group_by问题7.png

    这样可以解决问题,但本着技术就是要搞清楚到底是咋写的,也并不想直接给他设置为 false,

    在 vendor/laravel/framework/src/ILLuminate/Database 文件夹下搜索 strict ,直接找到核心代码


    文件:vendor/laravel/framework/src/ILLuminate/Database/Connectors/MySqlConnector.php

分析laravel解决mysql only_full_group_by问题8.png

    第一个判断直接判断是否存在 modes 配置,有的话就直接使用这个


    来,搞一下

分析laravel解决mysql only_full_group_by问题9.png

    测试,直接问题搞定


    本着寻根刨底的精神,再接着往下看


    如果 strict = true


    将直接设置程序中写死的 sql_mode, laravel 区分了 mysql 8.0.11 和别的版本

分析laravel解决mysql only_full_group_by问题10.png

    再接着 如果 strict = false ,直接将 sql_mode 设置为NO_ENGINE_SUBSTITUTION

分析laravel解决mysql only_full_group_by问题11.png

    到这里问题就彻底解决了


    最终解决方式

分析laravel解决mysql only_full_group_by问题12.png

    保留了 strict = true,增加 modes 选项,里面的参数是 laravel 底层的配置,只是去掉了 ONLY_FULL_GROUP_BY


    总结:绕了很多弯,花了很多时间。最终问题得以解决,无需修改mysql的任何配置

    上面是有关laravel解决mysql only_full_group_by问题的详细内容,请关注其他相关文章!

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin