mysql5.7 sqlmode设置_MYSQL5.7版本解决sql_mode=only_full_group_by问题

当遇到MySQL5.7中由于`sql_mode=only_full_group_by`导致的错误时,可以采取两种解决方案:1. 使用`any_value()`函数修改SQL查询;2. 修改MySQL的`sql_mode`设置,移除`ONLY_FULL_GROUP_BY`,并重启服务。通过`select @@global.sql_mode`检查当前模式,然后使用`set @@global.sql_mode`设置新的模式。在Linux环境下,可以在`my.cnf`文件中修改`sql_mode`配置并重启MySQL服务。
摘要由CSDN通过智能技术生成

具体出错提示:

[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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值