最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql8報(bào)錯(cuò)this is incompatible with sql_mode=only_full_group_by問(wèn)題

 更新時(shí)間:2024年01月26日 16:02:20   作者:XL's妃妃  
這篇文章主要介紹了Mysql8報(bào)錯(cuò)this is incompatible with sql_mode=only_full_group_by問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、報(bào)錯(cuò)問(wèn)題

1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column '字段名' 
which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

大致意思:

SELECT列表的表達(dá)式#2不在GROUP BY子句中,并且包含非聚合列的jsfwpt.o。

它在功能上不依賴于GROUP BY子句中的列;這與sql_mode=only_full_group_by不兼容

二、導(dǎo)致的原因

1、如果mysql是高版本,當(dāng)執(zhí)行g(shù)roup by時(shí),select的字段不屬于group by的字段的話,sql語(yǔ)句就會(huì)報(bào)錯(cuò)

2、這個(gè)錯(cuò)誤發(fā)生在mysql 5.7.5 版本及以上版本會(huì)出現(xiàn)的問(wèn)題:mysql 5.7.5版本以上默認(rèn)的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,這個(gè)配置嚴(yán)格執(zhí)行了"SQL92標(biāo)準(zhǔn)"。很多從5.6升級(jí)到5.7時(shí),為了語(yǔ)法兼容,大部分都會(huì)選擇調(diào)整sql_mode,使其保持跟5.6一致,為了盡量兼容程序。

3、在sql執(zhí)行時(shí),出現(xiàn)該原因,簡(jiǎn)單來(lái)說(shuō)就是:由于開(kāi)啟了ONLY_FULL_GROUP_BY的設(shè)置,如果select 的字段不在 group by 中,并且select 的字段未使用聚合函數(shù)(SUM,AVG,MAX,MIN等)的話,那么這條sql查詢是被mysql認(rèn)為非法的,會(huì)報(bào)錯(cuò)誤…

三、檢查是否是此原因

1、查看sql_mode

select @@GLOBAL.sql_mode;

2、執(zhí)行結(jié)果:sql_mode開(kāi)啟了only_full_group_by 屬性

四、解決辦法

方法1、使用函數(shù)ANY_VALUE()

使用ANY_VALUE(<字段名>)將報(bào)錯(cuò)的字段包裹起來(lái)

  • MySQL有any_value(field)函數(shù),它主要的作用就是抑制ONLY_FULL_GROUP_BY值被拒絕。
  • 這樣sql語(yǔ)句不管是在ONLY_FULL_GROUP_BY模式關(guān)閉狀態(tài)還是在開(kāi)啟模式都可以正常執(zhí)行,不被mysql拒絕。

方法2、臨時(shí)修改sql_mode

方法2:僅用于臨時(shí)去掉ONLY_FULL_GROUP_BY,重新設(shè)置值,重啟mysql之后此方法就會(huì)失效

在已創(chuàng)建的數(shù)據(jù)庫(kù)中執(zhí)行:

SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

修改mysql全局的sql_mode執(zhí)行:

SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

方法3、永久修改sql_mode

通過(guò)修改mysql配置文件my.ini解決

windows系統(tǒng)MySQL8永久修改sql_mode的方式

1、在MySQL安裝的目錄所在的分區(qū)根目錄下,“查看“——勾選顯示“隱藏的項(xiàng)目”,

2、my.ini的路徑:ProgramData\MySQL\MySQL Server 8.0

3、打開(kāi)my.ini文件

在[mysqld]下面找sql-mode,修改為如下內(nèi)容:(沒(méi)有sql-mode就追加在[mysqld]下面)

sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

4、重啟mysql

liunx上的修改方式

1、文件路徑一般在:/etc/my.cnf,/etc/mysql/my.cnf

2、my.ini的具體修改方法略:與windows上一樣

五、驗(yàn)證

sql_mode已經(jīng)沒(méi)有only_full_group_by 屬性了

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

沾化县| 宜阳县| 酉阳| 凤冈县| 南涧| 砀山县| 上高县| 陈巴尔虎旗| 河间市| 藁城市| 麻栗坡县| 玛纳斯县| 湖口县| 周口市| 长岛县| 集安市| 甘泉县| 大石桥市| 沙湾县| 汉源县| 梅河口市| 威宁| 宁津县| 黑河市| 云林县| 南川市| 张家港市| 会东县| 滁州市| 定安县| 大厂| 无为县| 浦北县| 凌海市| 普兰县| 南康市| 萨迦县| 中牟县| 西乡县| 依安县| 奉节县|