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’即可。
2、远程登录之后修改mysql.cnf文件
- 切换到对应用户下执行 vim /etc/mysql/conf.d/mysql.cnf
- 然后输入 i 将模式变为inster
- sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 复制到文件末尾
- 键盘Esc
- 最后输入 :wq 保存退出
- 重启msyql service mysql restart