最近在做一個 項目,本地開發環境用的是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
到此以上問題都結局了