之前數(shù)據(jù)庫版本為 5.7 使用group by 關(guān)鍵字疼约,可以輸出除group by的以外的字段宵统,更新到8.0后突然報(bào)錯(cuò)
Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY
clause and contains nonaggregated column
'datasource.table1.SEQ' which is not functionally dependent
on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by
原因是什么呢?
mysql 5.7+中 默認(rèn)啟用了 ONLY_FULL_GROUP_BY
這個(gè)表示什么呢助琐,從字面上看符隙,大概就是一種嚴(yán)謹(jǐn)?shù)腟QL模式,類似于Oracel那些Group by語句套硼,就是你查詢那些字段卡辰,group by的時(shí)候也要寫上哪些字段。知道原因了邪意,那把這個(gè)模式去掉就可以了九妈。
查看mysql是否啟用ONLY_FULL_GROUP_BY
select @@global.sql_mode
如有則刪除
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';
但是這種只是臨時(shí)的,重啟后會(huì)恢復(fù)默認(rèn)配置雾鬼,終極辦法是修改mysql配置文件linux 為my.cnf ,windows 為my.ini,找到[mysqld]
如果是mysql8.0萌朱,則需要去掉NO_AUTO_CREATE_USER,因?yàn)樵趍ysql8.0中已經(jīng)沒有這個(gè)模式了策菜。
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
問題解決