最近在做一个 项目,本地开发环境用的是mysql5.5,为了考虑性能瓶颈,我们计划在客户那边使用mysql5.7版本,当我们部署上去之后,用户真正使用的时候,发生了一些错误,比如
In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'znxd_rjhjxt.b.F_YEAR'; this is incompatible with sql_mode=only_full_group_by
一看这个问题就是使用了group by的问题,但是查询的数据必须要是用group by 来进行分组
最后为了解决当前的这个问题,我们把group by 去掉了
但是在进行查询汇总数据的时候,又出现了这个问题,经过上网查找,是mysql5.7使用查询语句的聚合函数的时候,查询的每一个字段都必须使用聚合函数
最后找到的解决方法是修改数据库中的配置
1.查询数据库使用的模式
SELECT @@sql_mode
上图中框住的就是罪魁祸首,我们把这个在配置文件中去掉
把my.cnf中的sql_mode的值改为STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
如果配置文件中没有sql_mode就给他加上,因为数据库在读取不到这个值的时候,会使用数据库默认的配置,默认的配置就有ONLY_FULL_GROUP_BY
到此以上问题都结局了