国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql不支持group by的解決方法小結(jié)

2024-07-24 12:54:27
字體:
供稿:網(wǎng)友

下載安裝的是最新版的mysql5.7.x版本,默認(rèn)是開啟了 only_full_group_by 模式的,但開啟這個(gè)模式后,原先的 group by 語句就報(bào)錯(cuò),然后又把它移除了。

一旦開啟 only_full_group_by ,感覺,group by 將變成和 distinct 一樣,只能獲取受到其影響的字段信息,無法和其他未受其影響的字段共存,這樣,group by 的功能將變得十分狹窄了

only_full_group_by 模式開啟比較好。

因?yàn)樵?mysql 中有一個(gè)函數(shù): any_value(field) 允許,非分組字段的出現(xiàn)(和關(guān)閉 only_full_group_by 模式有相同效果)。

具體出錯(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. 1、查看sql_mode

select @@global.sql_mode;

1.2. 查詢出來的值為:

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è)置值。

select @@global.sql_mode;

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';
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';

2.1. 3、上面是改變了全局sql_mode,對(duì)于新建的數(shù)據(jù)庫有效。對(duì)于已存在的數(shù)據(jù)庫,則需要在對(duì)應(yīng)的數(shù)據(jù)下執(zhí)行:

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';  

解決辦法大致有兩種:

一:在sql查詢語句中不需要group by的字段上使用any_value()函數(shù)
這種對(duì)于已經(jīng)開發(fā)了不少功能的項(xiàng)目不太合適,畢竟要把原來的sql都給修改一遍

3.1.

二:修改my.cnf(windows下是my.ini)配置文件,刪掉only_full_group_by這一項(xiàng)
若我們項(xiàng)目的mysql安裝在ubuntu上面,找到這個(gè)文件打開一看,里面并沒有sql_mode這一配置項(xiàng),想刪都沒得刪。

當(dāng)然,還有別的辦法,打開mysql命令行,執(zhí)行命令

select @@sql_mode;
這樣就可以查出sql_mode的值,復(fù)制這個(gè)值,在my.cnf中添加配置項(xiàng)(把查詢到的值刪掉only_full_group_by這個(gè)選項(xiàng),其他的都復(fù)制過去):

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
如果 [mysqld] 這行被注釋掉的話記得要打開注釋。然后重重啟mysql服務(wù)

注:使用命令

set sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

這樣可以修改一個(gè)會(huì)話中的配置項(xiàng),在其他會(huì)話中是不生效的。  

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 夏津县| 新巴尔虎左旗| 邯郸市| 大化| 泰和县| 来安县| 东安县| 枝江市| 长沙县| 门源| 白城市| 禄丰县| 永嘉县| 唐山市| 措美县| 平远县| 大邑县| 甘洛县| 河北省| 平舆县| 佳木斯市| 宁河县| 普宁市| 辽宁省| 体育| 苗栗县| 瑞昌市| 金溪县| 天气| 连平县| 新乐市| 平乐县| 泊头市| 南陵县| 西吉县| 岳池县| 即墨市| 镇康县| 天柱县| 文安县| 兰考县|