解決mysql @@sql_mode問題---only_full_group_by
運(yùn)行環(huán)境
- linux ubuntu 14.0.4.3
- 數(shù)據(jù)庫(kù) mysql 5.7.0
系統(tǒng)運(yùn)行出現(xiàn)的問題
報(bào)錯(cuò)如下:
Expression #2 of SELECT list is not in GROUP BY clause and contains
nonaggregated column ‘sss.month_id’ which is not functionally
dependent on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by
上度娘查詢的結(jié)果
問題出現(xiàn)的原因:
MySQL 5.7.5及以上功能依賴檢測(cè)功能。
如果啟用了ONLY_FULL_GROUP_BY SQL模式(默認(rèn)情況下),MySQL將拒絕選擇列表,HAVING條件或ORDER BY列表的查詢引用在GROUP BY子句中既未命名的非集合列,也不在功能上依賴于它們。
(5.7.5之前,MySQL沒有檢測(cè)到功能依賴關(guān)系,默認(rèn)情況下不啟用ONLY_FULL_GROUP_BY。
有關(guān)5.7.5之前的行為的說(shuō)明,請(qǐng)參見“MySQL 5.6參考手冊(cè)”。)
提供兩個(gè)解決方案
方案一(只適合暫時(shí)解決性的,mysql 重啟就一朝回到解放前了)
1.用sql語(yǔ)句查詢 select @@global.sql_mode
查詢出來(lái)的值為:
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
2.去掉ONLY_FULL_GROUP_BY,重新設(shè)置值。
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 中的配置文件,達(dá)到當(dāng)重啟mysql 回去制動(dòng)加載配置文件的內(nèi)容)
1.通過(guò)linux 命令 【whereis mysql 】找到mysql 的配置文件

2.【cd /etc/mysql 】找到配置文件 my.cnf

3.【vim my.cnf】編輯里面的內(nèi)容,加上圖中的那段代碼

4.重啟mysql 服務(wù)就搞定了

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- mysql的group by函數(shù)使用方法
- mysql中的group?by用法指南
- MySQL的GROUP BY與COUNT()函數(shù)的使用方法及常見問題
- mysql中的group?by和between用法詳解
- mysql中的group by高級(jí)用法
- MySQL GROUP BY分組取字段最大值的方法示例
- MySQL中distinct和group by去重的區(qū)別解析
- MySQL中ONLY_FULL_GROUP_BY的使用小結(jié)
- MySQL 5.7升級(jí)8.0報(bào)異常:ONLY_FULL_GROUP_BY的問題解決
- mysql group by 多個(gè)行轉(zhuǎn)換為一個(gè)字段
相關(guān)文章
MySQL操作數(shù)據(jù)庫(kù)和表的常用命令新手教程
Mysql中InnoDB與MyISAM索引差異詳解(最新整理)
mysql5.5 master-slave(Replication)主從配置
MySQL 設(shè)置AUTO_INCREMENT 無(wú)效的問題解決

