真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Mysql8.0及以上報錯only_full_group_by的原因和解決方案

這篇文章主要介紹“MySQL8.0及以上報錯only_full_group_by的原因和解決方案”,在日常操作中,相信很多人在Mysql8.0及以上報錯only_full_group_by的原因和解決方案問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Mysql8.0及以上報錯only_full_group_by的原因和解決方案”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創(chuàng)新互聯(lián)公司是一家以重慶網(wǎng)站建設公司、網(wǎng)頁設計、品牌設計、軟件運維、seo優(yōu)化排名、小程序App開發(fā)等移動開發(fā)為一體互聯(lián)網(wǎng)公司。已累計為社區(qū)文化墻等眾行業(yè)中小客戶提供優(yōu)質的互聯(lián)網(wǎng)建站和軟件開發(fā)服務。

今天發(fā)現(xiàn)mysql8 關于only_full_group_by的問題,舊代碼的查詢group by 函數(shù)時會出現(xiàn)一個報錯信息

ERROR 1055 (42000): Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'postscan.verifyDelayLog.auditor' which is not functionally dependent on columns in GROUP BY clause; 
this is incompatible withsql_mode=only_full_group_by

查了資料,對于 group by 的這種聚合操作,如果在select 中的列,沒有在group by 中出現(xiàn),那么這個SQL是不合法的,因為列不在group by的從句中,所以對于設置了這個mode的數(shù)據(jù)庫,在使用group by 的時候,就要用MAX(),SUM(),ANT_VALUE()的這種聚合函數(shù),才能完成GROUP BY 的聚合操作 兼容方法:

  1. sql修改

輸入:SELECT @@GLOBAL.sql_mode;
 
結果: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
 
 
 
然后我們來修改sql_mode
 
set GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

這個修改再重啟之后就失效

  1. 修改my.cnf

附sql_mode常用值如下:

ONLY_FULL_GROUP_BY:對于GROUP BY聚合操作,如果在 SELECT 中的列,沒有在 GROUP BY 中出現(xiàn),那么這個SQL是不合法的,因為列不在GROUP BY從句中。
 
NO_AUTO_VALUE_ON_ZERO:該值影響自增長列的插入。默認設置下,插入0或NULL代表生成下一個自增長值。如果用戶 希望插入的值為0,而該列又是自增長的,那么這個選項就有用了。
 
STRICT_TRANS_TABLES:在該模式下,如果一個值不能插入到一個事務表中,則中斷當前的操作,對非事務表不做限制
 
NO_ZERO_IN_DATE:在嚴格模式下,不允許日期和月份為零
 
NO_ZERO_DATE:設置該值,mysql數(shù)據(jù)庫不允許插入零日期,插入零日期會拋出錯誤而不是警告。
 
ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE過程中,如果數(shù)據(jù)被零除,則產(chǎn)生錯誤而非警告。如 果未給出該模式,那么數(shù)據(jù)被零除時MySQL返回NULL
 
NO_AUTO_CREATE_USER:禁止GRANT創(chuàng)建密碼為空的用戶
 
NO_ENGINE_SUBSTITUTION:如果需要的存儲引擎被禁用或未編譯,那么拋出錯誤。不設置此值時,用默認的存儲引擎替代,并拋出一個異常
 
PIPES_AS_CONCAT:將"||"視為字符串的連接操作符而非或運算符,這和Oracle數(shù)據(jù)庫是一樣的,也和字符串的拼接函數(shù)Concat相類似
 
ANSI_QUOTES:啟用ANSI_QUOTES后,不能用雙引號來引用字符串,因為它被解釋為識別符

到此,關于“Mysql8.0及以上報錯only_full_group_by的原因和解決方案”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站題目:Mysql8.0及以上報錯only_full_group_by的原因和解決方案
文章起源:http://weahome.cn/article/jhehjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部