日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

mysql 5.7 full_MySQL5.7默认打开ONLY_FULL_GROUP_BY 解决方案

發(fā)布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 5.7 full_MySQL5.7默认打开ONLY_FULL_GROUP_BY 解决方案 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MySQL5.7后將sql_mode的ONLY_FULL_GROUP_BY模式默認(rèn)設(shè)置為打開狀態(tài),這樣一來,很多之前的sql語句可能會出現(xiàn)錯誤,錯誤信息如下:

Error Code: 1055. Expression #3 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的列都要在group中,或許本身是聚合列(SUM,AVG,MAX,MIN)才行

解決方案一:

這時我們可以通過navicat或workbench輸入select @@global.sql_mode來查看當(dāng)前數(shù)據(jù)庫的sql_mode屬性值

復(fù)制查詢結(jié)果,去掉ONLY_FULL_GROUP_BY,重新賦值,執(zhí)行成功后,就可以將ONLY_FULL_GROUP_BY模式默認(rèn)設(shè)置為關(guān)閉狀態(tài),解決之前的sql報錯問題

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'

但是這種方式設(shè)置的只是當(dāng)前會話中的sql_model,服務(wù)器重啟后,設(shè)置可能會失效。

解決方案二:

修改my.ini 文件

[mysql] [mysqld] 下面添加?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有any_value(field)函數(shù),他主要的作用就是抑制ONLY_FULL_GROUP_BY值被拒絕

官方有介紹,地址:https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value

我們可以把select語句中查詢的屬性(除聚合函數(shù)所需的參數(shù)外),全部放入any_value(field)函數(shù)中;

例如:select name,any_value(sex) from test_table group by name

這樣sql語句不管是在ONLY_FULL_GROUP_BY模式關(guān)閉狀態(tài)還是在開啟模式都可以正常執(zhí)行,不被mysql拒絕。

總結(jié)

以上是生活随笔為你收集整理的mysql 5.7 full_MySQL5.7默认打开ONLY_FULL_GROUP_BY 解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。