zoukankan      html  css  js  c++  java
  • MYSQL5.7版本解决sql_mode=only_full_group_by问题

    具体出错提示:

    [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    解决办法大致有两种:

    一:在sql查询语句中不需要group by的字段上使用any_value()函数

    这种对于已经开发了不少功能的项目不太合适,毕竟要把原来的sql都给修改一遍

    二:

    若我们项目的mysql安装在ubuntu上面,找到这个文件打开一看,里面并没有sql_mode这一配置项,想删都没得删。

    当然,还有别的办法,打开对应的数据库 mysql查询命令行,执行命令:

    1.查看sql_mode

    select @@global.sql_mode

    查询出来的值为:

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    2、去掉ONLY_FULL_GROUP_BY,重新设置值。

    set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';


    3.记得在对应的开发数据库和mysql数据库都执行这两句命令,最后重启mysql,
    Linux命令:systemctl restart mysqld
    再输入查询语句试试有没有报错,不行再重新来。
    还不行,重新装5.7.X版本的mysql吧。

    还有以后一种方法:
    若是linux服务器上的数据库 ,进入服务器,找到etc目录的my.cnf文件

      my.cnf(windows下是my.ini)配置文件,删掉only_full_group_by这一项,若是存在的话;


    在最后一行加上这句:sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    保存后重启mysql服务:systemctl restart mysqld

     
  • 相关阅读:
    nignx重启启动关闭
    Tomcat日志配置
    误删除了mssql的表。 使用命令:drop table xxxx
    使用redis-cli定时执行指定命令
    在crontab中动态写日志
    循环日期的shell
    CountDownLatch、CyclicBarrier、Semaphore 区别
    log4j 知识点
    slf4j-api、slf4j-log4j12、log4j 之间是什么关系?
    HTTP协议中的长连接、短连接、长轮询、短轮询
  • 原文地址:https://www.cnblogs.com/cx-code/p/10026152.html
Copyright © 2011-2022 走看看