mysql下this is incompatible with sql_mode=only_full_group_by解決方案


本地測試沒有問題,部署到客戶服務器之后報如下錯誤:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘testID’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

這個錯誤的原因是高版本mysql(客戶服務器版本是5.7.18)默認的sql_mode包含ONLY_FULL_GROUP_BY,這個屬性保證了select到的列都在group by中出現。 
查看sql_mode的語句如下:

select @@GLOBAL.sql_mode;
  • 1

可以使用sql語句暫時修改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
  • 1

然而重啟mysql數據庫之后,ONLY_FULL_GROUP_BY又出現了,順便寫下重啟數據庫命令:

service mysqld stop
service mysqld start
  • 1
  • 2

所以需要修改mysql配置文件,通過手動添加sql_mode的方式強制指定不需要ONLY_FULL_GROUP_BY屬性,my.cnf位於etc文件夾下,vim下光標移到最后,添加如下:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  • 1

重啟后問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM