問題出現原因:
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 服務,再次測試即可。