columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by mysql8.0解决办法

问题如下:

ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘jol.solution.nick’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因:

		mysql5.7以上默认开启了only_full_group_by选项。我的版本是mysql8.0以上的

Windows解决办法:

先查询查看sql_mode中的内容

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_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+

解决办法有两种,第一种是临时解决,不治本,数据库重启还会重新出现此问题,第二种是修改my.ini配置文件,治本,也方便
办法1:
将查询到的sql_mode中ONLY_FULL_GROUP_BY删去即可,重启就会失效

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

办法2:
先找到自己mysql安装路径

select @@basedir;
+-----------+
| @@basedir |
+-----------+
| E:\mysql\ |
+-----------+

然后进入文件夹找到自己的my.ini配置文件,修改[mysqld]中的内容,添加下面的内容就可以
columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by mysql8.0解决办法_第1张图片
columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by mysql8.0解决办法_第2张图片
一定要加在[mysqld]里面,就是下面这行代码,就是将查询到的sql_mode中ONLY_FULL_GROUP_BY删去

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

然后退出数据库,在服务里面重启MySQL就可以
columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by mysql8.0解决办法_第3张图片

Ubuntu系统/Linux系统解决办法

我的数据库配置文件存在 /etc/mysql/mysql.conf.d/mysqld.cnf 里,所以直接打开这个文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

打开文件后键入

 i #插入命令

会进入这个配置文件
columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by mysql8.0解决办法_第4张图片
可能会出现这个情况鼠标滚轮下滑没用,使用键盘按键⬇下拉就行
columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by mysql8.0解决办法_第5张图片
跟windows一样,添加sql_mode,也是删除ONLY_FULL_GROUP_BY后的那一串东西,加进入后键入键盘左上角的Esc,就会退出插入模式,然后再键入 :wq 后回车就可以保存文件,然后再重启MySQL就可以
重启命令:

sudo service mysql restart

然后进入MySQL输入下面的代码查看,即可

select @@GLOBAL.sql_mode;

在这里插入图片描述

你可能感兴趣的:(mysql,linux,mysql,数据库,ubuntu)