【解决】 SELECT list is not in GROUP BY clause and contains nonaggregated column
出错情况问题分析出现此异常的原因是:如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。使用数据库的版本信息mysql-8.0.15-winx64解决策略法 11 查看 sql_mode1 使用以下命令查看自己的 sql_modesel
出错情况
问题分析
出现此异常的原因是:如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。
使用数据库的版本信息
mysql-8.0.15-winx64
解决策略
法 1
1 查看 sql_mode
1 使用以下命令查看自己的 sql_mode
select @@global.sql_mode; 或者 show variables like ‘sql_mode’;
可以看到查询出来的表格中会出现 ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
2 重设全局模式值
set@@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
可以解决此问题,不过貌似这样的话可能只能解决一时,下面从配置文件方面进行配置,mysql 8.0以上取消了NO_AUTO_CREATE_USER这个关键字,如果是mysql 8.0 以下的则可以:sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
法2
1 找到 Mysql 文件夹下的 my.ini
2 先关闭 mysql
net stop mysql
3 修改 my.ini 文件
[mysqld]
# sql模式[解决:SELECT list is not in GROUP BY clause and contains nonaggregated column]问题
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
4 重启 mysql
net start mysql
更多推荐
所有评论(0)