国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 涡阳县| 黑水县| 樟树市| 新和县| 札达县| 吉木乃县| 贡山| 库尔勒市| 桐柏县| 宝丰县| 昂仁县| 凤庆县| 临清市| 喀喇沁旗| 南木林县| 老河口市| 宁乡县| 郁南县| 门头沟区| 怀集县| 错那县| 宽城| 阿拉善盟| 海安县| 怀柔区| 望江县| 上杭县| 定南县| 上虞市| 光泽县| 尚志市| 连南| 习水县| 龙泉市| 柳州市| 阳江市| 日喀则市| 岐山县| 麻江县| 文山县| 双桥区|