坑人的Mysql5.7问题(默认不支持Group By语句)

 更新时间:2023年10月26日 16:56:20   作者:默默的菜鸟--  
这篇文章主要介绍了坑人的Mysql5.7问题(默认不支持Group By语句),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Mysql5.7默认不支持Group By语句

部署项目时,项目启动完毕。

点击有group by 查询语句时出现错误,界面中没有该有的数据。

查询log日志发现错误

 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database_tl.emp.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 。。。。

由于之前也没有记录,所以日志信息在网上找了一个大致一样的。

原因

mysql 5.7 新特性:

点击打开链接 默认是不支持GroupBy 语句的。

可以进入mysql 命令行中使用

mysql> SELECT @@GLOBAL.sql_mode;

进行查询

结果为:

+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@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 |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

所以我们需要做的就是将上面画红的属性注掉。

这里为了之后全局,重启之后也能生效,使用修改配置文件进行修改属性

1.将这个 @@GLOBAL.sql_mode 设置为空

mysql> set @@GLOBAL.sql_mode='';
Query OK, 0 rows affected, 1 warning (0.00 sec)

2.打开配置文件,这里mysql5.7 的配置文件很诡异

这里我的配置文件的路径为:

/etc/mysql/mysql.conf.d 下的mysqld.cnf

打开找到

[mysqld]

加入属性 

sql_mode        = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

这样,之前项目中groupby 语句就可以使用了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL5.6 GTID模式下同步复制报错不能跳过的解决方法

    MySQL5.6 GTID模式下同步复制报错不能跳过的解决方法

    搭建虚拟机centos6.0, mysql5.6.10主从复制,死活不同步,搞了一整天找到这篇文章终于OK了,特分享一下,需要的朋友可以参考下
    2020-04-04
  • Mysql实现增量恢复的方法详解

    Mysql实现增量恢复的方法详解

    本文给大家分享的是如何实现mysql增量恢复的场景以及具体实现方法,有需要的小伙伴可以参考下
    2018-07-07
  • SQL SERVER递归查询的实现

    SQL SERVER递归查询的实现

    本文主要介绍了SQL SERVER递归查询的实现,递归查询是通过CTE来实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • MySQL命令行中给表添加一个字段(字段名、是否为空、默认值)

    MySQL命令行中给表添加一个字段(字段名、是否为空、默认值)

    本文介绍MySQL数据库使用SQL语句来在现有的表中,添加一个新的字段,包括设置字段的是否为空、默认值等
    2016-04-04
  • Mysql 5.7.14 使用常见问题汇总(推荐)

    Mysql 5.7.14 使用常见问题汇总(推荐)

    本文给大家分享Mysql 5.7.14 使用常见问题汇总的相关知识及结合自己的实践总结了相关原因,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • mysql 数据汇总与分组

    mysql 数据汇总与分组

    这篇文章主要介绍了mysql 数据汇总与分组,我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表生成。下面来看看具体例子,需要的朋友可以参考一下
    2021-10-10
  • MySQL窗口函数 over(partition by)的用法

    MySQL窗口函数 over(partition by)的用法

    本文主要介绍了MySQL窗口函数 over(partition by)的用法, partition by相比较于group by,能够在保留全部数据的基础上,只对其中某些字段做分组排序,下面就来介绍一下具体用法,感兴趣的可以了解一下
    2024-02-02
  • MySQL 8.0.19支持输入3次错误密码锁定账户功能(例子)

    MySQL 8.0.19支持输入3次错误密码锁定账户功能(例子)

    这篇文章主要介绍了MySQL 8.0.19支持输入3次错误密码锁定账户功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • MySQL索引之主键索引

    MySQL索引之主键索引

    在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别?上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别
    2015-12-12
  • mysql alter table 修改表命令详细介绍

    mysql alter table 修改表命令详细介绍

    MYSQL ALTER TABLE命令用于修改表结构,例如添加/修改/删除字段、索引、主键等等,本文章通过实例向大家介绍MYSQL ALTER TABLE语句的使用方法,需要的朋友可以参考一下。
    2016-10-10

最新评论