MySQL運(yùn)行報(bào)錯(cuò):“Expression?#1?of?SELECT?list?is?not?in?GROUP?BY?clause?and?contains?nonaggre”解決方法
項(xiàng)目場(chǎng)景:
最近在部署項(xiàng)目之后,運(yùn)行出現(xiàn)報(bào)錯(cuò):
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘grades.order_id’
which is not functionally dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_by
問題描述
字面意思理解:
SELECT 列表的表達(dá)式 #1 不在 GROUP BY 子句中,并且包含非聚合列“grades.order_id” 它在功能上不依賴于
GROUP BY 子句中的列; 這與 sql_mode=only_full_group_by 不兼容
使用GROUP BY 語句違背了sql_mode=only_full_group_by。因?yàn)閙ysql版本5.7之后默認(rèn)的模式是ONLY_FULL_GROUP_BY。
原因分析:
查看官方文檔,發(fā)現(xiàn)從 MySQL 5.7.5 開始,默認(rèn) SQL 模式包括 ONLY_FULL_GROUP_BY。 (在 5.7.5 之前,MySQL 不檢測(cè)函數(shù)依賴,并且默認(rèn)不啟用 ONLY_FULL_GROUP_BY。)這可能會(huì)導(dǎo)致一些sql語句失效。
解決方案:
執(zhí)行命令vim /etc/mysql/conf.d/mysql.cnf修改配置文件
如果my.cnf中有sql_mode配置,則將ONLY_FULL_GROUP_BY去掉。
如果沒有,則將下面內(nèi)容放到相應(yīng)位置
[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
保存之后,執(zhí)行命令service mysql restart重啟mysql即可。
2022.06.10更新

最近用docker安裝mysql又出現(xiàn)這個(gè)問題,修改配置文件之后,重啟mysql發(fā)現(xiàn)連不上mysql
于是查看錯(cuò)誤信息 docker logs -f --tail 10 mysql,出現(xiàn)報(bào)錯(cuò):
Error while setting value
‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
to ‘sql_mode’

原來mysql 8.0 以上取消了NO_AUTO_CREATE_USER這個(gè)關(guān)鍵字,在my.cnf中的sql_mode中刪掉這個(gè)關(guān)鍵字即可。
總結(jié)
到此這篇關(guān)于MySQL運(yùn)行報(bào)錯(cuò):“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解決方法的文章就介紹到這了,更多相關(guān)MySQL運(yùn)行報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Express實(shí)現(xiàn)前端后端通信上傳圖片之存儲(chǔ)數(shù)據(jù)庫(mysql)傻瓜式教程(二)
- Express實(shí)現(xiàn)前端后端通信上傳圖片之存儲(chǔ)數(shù)據(jù)庫(mysql)傻瓜式教程(一)
- 淺析node連接數(shù)據(jù)庫(express+mysql)
- node基于express框架操作Mysql數(shù)據(jù)庫的步驟
- 解決大于5.7版本mysql的分組報(bào)錯(cuò)Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
- Node.js+Express+Mysql 實(shí)現(xiàn)增刪改查
- Express項(xiàng)目中操作MySQL的步驟
相關(guān)文章
分享幾個(gè)簡(jiǎn)單MySQL優(yōu)化小妙招
這篇文章主要介紹了分享幾個(gè)簡(jiǎn)單MySQL優(yōu)化小妙招,分享內(nèi)容有、設(shè)置大小寫不敏感、MySql?的用戶和權(quán)限管理等內(nèi)容,需要的小伙伴可以參考一下,需要的朋友可以參考下2022-03-03
mysql如何定時(shí)自動(dòng)新增分區(qū)
這篇文章主要介紹了mysql如何定時(shí)自動(dòng)新增分區(qū)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
關(guān)于MySQL的時(shí)間進(jìn)位問題淺析
這篇文章主要給大家介紹了關(guān)于MySQL的時(shí)間進(jìn)位問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Mysql| 使用通配符進(jìn)行模糊查詢?cè)斀?like,%,_)
這篇文章主要介紹了Mysql| 使用通配符進(jìn)行模糊查詢?cè)斀?like,%,_),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Mysql常用基準(zhǔn)測(cè)試命令總結(jié)
在本篇文章中我們給大家分享了關(guān)于Mysql常用基準(zhǔn)測(cè)試命令的總結(jié)內(nèi)容,有需要的讀者們可以學(xué)習(xí)下。2018-10-10
Mysql多表關(guān)聯(lián)不走索引的原因及分析
這篇文章主要介紹了Mysql多表關(guān)聯(lián)不走索引的原因及分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12

