MySQL查詢出現(xiàn)1055錯(cuò)誤的原因及解決方法
當(dāng)SQL語句查詢報(bào)1055錯(cuò)誤時(shí)的解決方法
報(bào)錯(cuò)內(nèi)容如下

報(bào)錯(cuò)原因
1.SQL語句中使用了group by,并且不需要分組的字段沒有加上any_value()函數(shù)
2.MySQL數(shù)據(jù)庫版本是大于5.7,報(bào)錯(cuò)信息中最后有一句sql_mode=ONLY_FULL_GROUP_BY,是因?yàn)镸ySQL數(shù)據(jù)庫的配置中sql_mode包含ONLY_FULL_GROUP_BY,導(dǎo)致使用group by會(huì)報(bào)錯(cuò)
ONLY_FULL_GROUP_BY 含義:對(duì)于GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現(xiàn),那么這個(gè)SQL是不合法的,因?yàn)榱胁辉贕ROUP BY從句中。在嚴(yán)格模式下,不要讓GROUP BY部分中的查詢指向未選擇的列,否則報(bào)錯(cuò)。
解決辦法
解決辦法共計(jì)3種,兩種需要改配置,一種不需要
1.不修改任何配置文件,但給不需要分組的字段上加上any_value()函數(shù)
SELECT any_value(id),value FROM table_name group by value;
這種方法不需要改配置,但是每條使用group by的SQL語句都要加上any_value()函數(shù)
2.臨時(shí)更改配置,下次重啟電腦或者M(jìn)ySQL服務(wù)時(shí)會(huì)失效
首先在數(shù)據(jù)庫中查詢下列代碼
select @@global.sql_mode
得到如下結(jié)果:

發(fā)現(xiàn)里面有ONLY_FULL_GROUP_BY
在查詢中繼續(xù)執(zhí)行下列代碼,其中等號(hào)后面的就是剛才查到的代碼去掉 ONLY_FULL_GROUP_BY 的部分
set global 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í)再重新測(cè)試之前報(bào)錯(cuò)的SQL語句,應(yīng)該會(huì)可用了
如果不可用,再執(zhí)行下列兩條語句:
select @@sql_mode
和
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';
就可以了
3.永久更改配置,下次重啟電腦或者M(jìn)ySQL服務(wù)時(shí)不會(huì)失效
第一步,先運(yùn)行下列語句
select @@sql_mode
第二步,打開MySQL的配置文件(window的時(shí)my.ini,一般會(huì)在安裝目錄的根目錄,Linux是my.cnf,一般會(huì)放
在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找)
第三步,在配置文件中找到 [mysqld],在他下面填入
[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
停止mysqlsystemctl stop mysql或者net stop mysql
重啟mysqlsystemctl restart mysql或者net start mysql
window用戶可以在服務(wù)中重啟MySQL:win+R,輸入services.msc,點(diǎn)確定找到mysql服務(wù),重啟即可解決問題
總結(jié)
到此這篇關(guān)于MySQL查詢出現(xiàn)1055錯(cuò)誤的原因及解決方法的文章就介紹到這了,更多相關(guān)MySQL查詢報(bào)錯(cuò)1055內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql中的general_log(查詢?nèi)罩?開啟和關(guān)閉
這篇文章主要介紹了mysql中的general_log(查詢?nèi)罩?開啟和關(guān)閉問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
MySQL導(dǎo)入導(dǎo)出助手類庫MysqlHelper安裝使用
這篇文章主要為大家介紹了MySQL導(dǎo)入導(dǎo)出助手類庫MysqlHelper安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
mysql把一段數(shù)據(jù)變成一個(gè)臨時(shí)表
這篇文章主要介紹了mysql把一段數(shù)據(jù)變成一個(gè)臨時(shí)表,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02

