mysql5.7之ONLY_FULL_GROUP_BY問題

最近在做一個 項目,本地開發環境用的是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

到此以上問題都結局了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章