1、问题原因

mysql为5.7之前,则会默认启用ONLY_FULL_GROUP_BY SQL模式,MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。

2、解决方法

1、第三方视图工具(Navicat)
select @@global.sql_mode
使用sql查询出结果后,一般情况会出现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去掉。
执行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’即可。
mysql出现Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggre错误
2、远程登录之后修改mysql.cnf文件

  1. 切换到对应用户下执行 vim /etc/mysql/conf.d/mysql.cnf
  2. 然后输入 i 将模式变为inster
  3. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 复制到文件末尾
  4. 键盘Esc
  5. 最后输入 :wq 保存退出
  6. 重启msyql service mysql restart

相关文章: