目录

原因

解决方法:

临时方案

永久方法


原因

SELECT 列表的表达式结果不在 GROUP BY 子句中,或者  GROUP BY 子句中值和结果不匹配

如下图列表是四个值但是group by只有一个值这种情况:

解决方法:

临时方案

查询sql_mode:

sql客户端执行下面语句:

select @@session.sql_mode;

查出的值,删除ONLY_FULL_GROUP_BY,或者直接使用下面sql重新设置sql_mode

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

但是此方法mysql重启后可能会恢复

永久方法

找到my.cnf,修改配置文件my.cnf

Windows操作系统中的MySQL配置文件是“my.ini”,位置一般在MySql安装的根目录下,也有可能在隐藏文件夹“ProgramData”下面;而Linux操作系统中的MySQL配置文件是“my.cnf”,位置一般在“/etc/my.cnf”或“/etc/mysql/my.cnf”目录下

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
 

 重启mysql即可。
service mysqld restart

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐