具體出錯(cuò)提示:
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
解決辦法:
1.1. 查看sql_mode.
SELECT @@sql_mode
或:
select @@global.sql_mode;
1.2. 查詢(xún)出來(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
臨時(shí)方法:
去掉 ONLY_FULL_GROUP
SET sql_mode ='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旧乞,重新設(shè)置值
上面是改變了全局sql_mode柱宦,對(duì)于新建的數(shù)據(jù)庫(kù)有效。對(duì)于已存在的數(shù)據(jù)庫(kù)募强,則需要在對(duì)應(yīng)的數(shù)據(jù)下執(zhí)行舟陆。
再查看sql_mode.
確實(shí)是沒(méi)有 ONLY_FULL_GROUP了捞挥。
永久方法:
修改my.cnf
oneinstack安裝的系統(tǒng),my.cnf在 etc/my.cnf滩届。
vi etc/my.cnf腐芍,如果找不到sql_mode差导,則增加,
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
service mysqld restart.
再查看:sql_mode.
OKV碛隆I韬帧!
解釋?zhuān)?/strong>
修改my.cnf(windows下是my.ini)配置文件泣刹,刪掉only_full_group_by這一項(xiàng)
下載安裝的是最新版的mysql5.7.x版本助析,默認(rèn)是開(kāi)啟了 only_full_group_by 模式的,但開(kāi)啟這個(gè)模式后椅您,原先的 group by 語(yǔ)句就報(bào)錯(cuò)貌笨,然后又把它移除了。
一旦開(kāi)啟 only_full_group_by 襟沮,感覺(jué)锥惋,group by 將變成和 distinct 一樣,只能獲取受到其影響的字段信息开伏,無(wú)法和其他未受其影響的字段共存膀跌,這樣,group by 的功能將變得十分狹窄了
only_full_group_by 模式開(kāi)啟比較好固灵。
因?yàn)樵?mysql 中有一個(gè)函數(shù): any_value(field) 允許捅伤,非分組字段的出現(xiàn)(和關(guān)閉 only_full_group_by 模式有相同效果)。