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