MYSQL5.7版本解决sql_mode=only_full_group_by问题

具体出错提示:mysql

[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_bylinux

解决办法大体有两种:

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

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

二:

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

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

1.查看sql_modewindows

select @@.sql_modeglobal

查询出来的值为:服务器

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函数

二、去掉ONLY_FULL_GROUP_BY,从新设置值。this

set @@.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文件
global

  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
相关文章
相关标签/搜索