mysql 遇到此問題解決辦法:Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggre

問題出現原因:

MySQL 5.7.5 及以上功能依賴檢測功能,如果啓用了 ONLY_FULL_GROUP_BY SQL 模式(默認情況下啓用),MySQL 將拒絕選擇列表,Having 條件或 Order by 列表的查詢引用在 Group By 字句中即未命名的非集合列,也不在功能上依賴於它們。

解決方法一【重啓服務就會失效】:

// 使用 sql 查詢
select @@global.sql_mode
// 查詢出來的值爲
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

去掉 ONLY_FULL_GROUP_BY ,自己重新設置值。

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 安裝目錄,編輯 my.ini 配置文件:
在這裏插入圖片描述
編輯內容如下:

# 修改MySQL5.7.5及以上依賴檢測功能
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 服務,再次測試即可。

在這裏插入圖片描述

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