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

Mysql8報錯this is incompatible with sql_mode=only_full_group_by問題

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

一、報錯問題

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列表的表達式#2不在GROUP BY子句中,并且包含非聚合列的jsfwpt.o。

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

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

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

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

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

三、檢查是否是此原因

1、查看sql_mode

select @@GLOBAL.sql_mode;

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

四、解決辦法

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

使用ANY_VALUE(<字段名>)將報錯的字段包裹起來

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

方法2、臨時修改sql_mode

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

在已創(chuàng)建的數(shù)據(jù)庫中執(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

通過修改mysql配置文件my.ini解決

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

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

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

3、打開my.ini文件

在[mysqld]下面找sql-mode,修改為如下內(nè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上一樣

五、驗證

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

總結(jié)

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

相關(guān)文章

最新評論

勐海县| 手机| 奎屯市| 漾濞| 宝兴县| 永修县| 霍山县| 临武县| 遂平县| 南部县| 通海县| 梅河口市| 汾阳市| 界首市| 皋兰县| 芦溪县| 卓资县| 乌苏市| 华宁县| 洪江市| 布拖县| 涪陵区| 蓝田县| 新宁县| 攀枝花市| 新乡市| 岑溪市| 开阳县| 蒙城县| 柏乡县| 河西区| 邻水| 霍山县| 墨玉县| 宕昌县| 寻甸| 邵阳县| 高清| 南岸区| 鄯善县| 师宗县|