mysql5.7版本因?yàn)閟ql_mode設(shè)置導(dǎo)致的問(wèn)題以及解決
mysql5.7版本因?yàn)閟ql_mode設(shè)置導(dǎo)致的問(wèn)題
因?yàn)橹匦掳惭b了環(huán)境,想把之前的數(shù)據(jù)庫(kù)導(dǎo)入到新庫(kù)里面,
結(jié)果就報(bào)了如下錯(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”
嘗試解決
方法一
登錄mysql,設(shè)置sql_mode
use mysql; set sql_mode=‘NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';
然而并沒(méi)有什么卵用
方法二
原來(lái)上邊的設(shè)置方法只是會(huì)話級(jí)別的設(shè)置,真正讓他生效得修改配置文件:
vi /etc/my.cnf
在[mysqld]配置項(xiàng)下面加上:
sql_mode=NO_UNSIGNED_SUBTRACTION,NO_ENGINE_SUBSTITUTION
重啟服務(wù),
再進(jìn)入mysql
show variables like ‘sql_mode';
設(shè)置成功啦?。?/p>
關(guān)于sql_mode
官方文檔:https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html
重要的幾項(xiàng)配置簡(jiǎn)單介紹,更多詳細(xì)介紹移步官方文檔
- NO_ENGINE_SUBSTITUTION 使用 ALTER TABLE或CREATE TABLE 指定 ENGINE 時(shí), 需要的存儲(chǔ)引擎被禁用或未編譯,該如何處理。
- 啟用NO_ENGINE_SUBSTITUTION時(shí),那么直接拋出錯(cuò)誤;不設(shè)置此值時(shí),CREATE用默認(rèn)的存儲(chǔ)引擎替代,ATLER不進(jìn)行更改,并拋出一個(gè) warning .
- STRICT_TRANS_TABLES 設(shè)置它,表示啟用嚴(yán)格模式。
注意: STRICT_TRANS_TABLES 不是幾種策略的組合,單獨(dú)指 INSERT、UPDATE出現(xiàn)少值或無(wú)效值該如何處理:
- 例如:
如果我們建表的時(shí)候不嚴(yán)格,比如字段設(shè)置是NOT NULL,然而并沒(méi)有給字段設(shè)置默認(rèn)值,在插入語(yǔ)句的時(shí)候,這個(gè)字段我們忽略,沒(méi)有賦值,恰好這個(gè)時(shí)候mysql的sql_mode是嚴(yán)格模式,即啟用了STRICT_TRANS_TABLES,就會(huì)報(bào)字段沒(méi)有默認(rèn)值的錯(cuò)誤。
或者說(shuō),我們將空字符串賦值給int類型的字段,在嚴(yán)格模式下也會(huì)報(bào)同樣的錯(cuò)誤。如果sql_mode沒(méi)有配置STRICT_TRANS_TABLES則不會(huì)報(bào)錯(cuò)
ONLY_FULL_GROUP_BY 對(duì)于GROUP BY聚合操作,如果在SELECT中的列、HAVING或者ORDER BY子句的列,沒(méi)有在GROUP BY中出現(xiàn),那么這個(gè)SQL是不合法的。因?yàn)椴辉?group by 的列查出來(lái)展示會(huì)有矛盾。
- 例如:
SELECT id from conf_merchant GROUP BY merchant_id;
這條sql在ONLY_FULL_GROUP_BY模式下就會(huì)報(bào)錯(cuò)。
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘iapw.conf_merchant.market_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
如果sql_mode 沒(méi)有配置ONLY_FULL_GROUP_BY,就不會(huì)報(bào)錯(cuò)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 詳解MySQL的sql_mode查詢與設(shè)置
- MySQL配置sql_mode的參數(shù)屬性作用
- mysql ONLY_FULL_GROUP_BY設(shè)置sql_mode無(wú)效排查問(wèn)題(windows)
- 如何解決MySQL?this?is?incompatible?with?sql_mode=only_full_group_by問(wèn)題
- MySQL?中的?SQL_MODE?設(shè)置方法ANSI_QUOTES?選項(xiàng)解析與應(yīng)用小結(jié)
- MySQL報(bào)錯(cuò)sql_mode=only_full_group_by的問(wèn)題解決
- 淺談mysql的sql_mode可能會(huì)限制你的查詢
相關(guān)文章
解決mysql ERROR 1017:Can''t find file: ''/xxx.frm'' 錯(cuò)誤
如果重啟服務(wù)器前沒(méi)有關(guān)閉mysql,MySql的MyiSAM表很有可能會(huì)出現(xiàn) ERROR #1017 :Can't find file: '/xxx.frm' 的錯(cuò)誤2011-08-08mysql和sqlserver查詢數(shù)據(jù)庫(kù)表的數(shù)量方法詳解
這篇文章主要介紹了mysql和sqlserver查詢數(shù)據(jù)庫(kù)表的數(shù)量方法詳解,本文給大家分享SQL語(yǔ)句寫法,文末補(bǔ)充介紹了查詢sqlserver 數(shù)據(jù)庫(kù)中各表?xiàng)l數(shù)的語(yǔ)句,需要的朋友可以參考下2023-07-07mysql 5.7.17 免安裝版配置方法圖文教程(windows10)
這篇文章主要為大家詳細(xì)介紹了windows10下mysql 5.7.17 免安裝版配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01MySQL實(shí)時(shí)監(jiān)控工具orztop的使用介紹
這篇文章主要給大家介紹了MySQL實(shí)時(shí)監(jiān)控工具orztop的使用,文中給出了詳細(xì)的介紹,相信對(duì)大家的學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01解決Linux安裝mysql報(bào)錯(cuò):失敗的軟件包是:mysql-community-libs-8.0.37-1.el7.x
mysql是一款常用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),常常被用于各類web應(yīng)用中,這篇文章主要給大家介紹了關(guān)于如何解決Linux安裝mysql報(bào)錯(cuò):失敗的軟件包是:mysql-community-libs-8.0.37-1.el7.x86_64?GPG的相關(guān)資料,需要的朋友可以參考下2024-08-08對(duì)MySQL配置參數(shù) my.ini/my.cnf的詳細(xì)解析
今天我們今天主要向大家描述的是MySQL配置參數(shù) my.ini/my.cnf,以下的文章就是對(duì)其實(shí)際操作的具體內(nèi)容的詳細(xì)解析2010-08-08mysql如何將查詢結(jié)果內(nèi)容進(jìn)行轉(zhuǎn)換
文章介紹了如何在MySQL中使用CASE表達(dá)式對(duì)查詢結(jié)果進(jìn)行多分支判斷,并分享了個(gè)人經(jīng)驗(yàn),希望對(duì)大家有所幫助2025-02-02mysql存儲(chǔ)過(guò)程用法實(shí)例分析
這篇文章主要介紹了mysql存儲(chǔ)過(guò)程用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了mysql存儲(chǔ)過(guò)程的概念、功能、定義、執(zhí)行、調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03