Expression #2 of SELECT list is not in GROUP BY clause and contains  nonaggregated column xxxx

  今天測試突然給我提了一個bug,說系統異常。我心想,我明明在開發環境測試過了,沒有問題,怎麼到了測試環境就有問題了,於是,我登錄測試環境的服務器看日誌,發現一個異常日誌,然後我把sql複製下來,粘貼到開發環境的數據庫執行了一下,咦!沒有問題,把他放在測試環境數據庫執行,有問題,然後我看一下數據庫的版本號一樣的,然後我看了下sql_mode的配置,發現配置不一致,最後我將測試環境的配置改了一下,ok,沒有問題了。哈哈哈

異常日誌:
Expression #2 of SELECT list is not in GROUP BY clause and contains 
nonaggregated column ‘sss.month_id’ which is not functionally 
dependent on columns in GROUP BY clause; this is incompatible with 
sql_mode=only_full_group_by
查詢sql_mode

select @@global.sql_mode;

修改sql_mode值
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';
總結

  mysql 5.7.x版本,默認開啓了only_full_group_by模式,但是開啓這個模式後,原先的group by 語句就報錯,我的解決辦法就是將ONLY_FULL_GROUP_BY去掉,但是還有另外一種辦法,可以看下面的連接

這裏有一篇文章挺不錯的:https://www.cnblogs.com/kenshinobiy/p/9580701.html

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