SELECT列表的表達式不在GROUP BY子句中,並且包含非聚合列,這與sql_mode = only_full_group_by不兼容


練習中查詢分組中最貴的商品報錯

ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mugua.goods.goods_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

 錯誤1055(42000):選擇列表的表達式#2不在GROUP BY子句中,並且包含非聚合列的mugua.goods。goods_name',它在功能上不依賴於GROUP BY子句中的列;這與sql_mode=only_full_group_by不兼容

網上大多數方法是

解決辦法:
1、找到mysql的配置文件 my.ini (一般在mysql根目錄)

2、在my.ini 中將以下內容添加到 [mysqld]下

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

3、重啟mysql服務!問題解決!

但是我加了我的mysql服務啟動不了。

錯誤的原因是新版本的mysql是嚴格模式,此時需要把嚴格模式改為普通模式

通過配置文件修改:

在my.ini 中將以下內容添加到 [mysqld]下

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

嚴格模式主要用以下場景

    • 不支持對not null字段插入null值
    • 不支持對自增長字段插入”值
    • 不支持text字段有默認值


免責聲明!

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



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