執(zhí)行sql報(bào)錯(cuò)only_full_group_by的2種解決方法
一、前言
最近老項(xiàng)目換新數(shù)據(jù)庫(kù)(都是mysql),有些在老數(shù)據(jù)庫(kù)可以執(zhí)行的sql,在新數(shù)據(jù)庫(kù)執(zhí)行就會(huì)報(bào)錯(cuò),如下:
[SQL]SELECT * FROM bsc_user_t A group by user_name limit 100 [Err] 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'otp.A.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
意思是說(shuō)數(shù)據(jù)庫(kù)的模式是sql_mode=only_full_group_by,group by的字段必須和查詢字段一致才行,否則不讓執(zhí)行,例如:
SELECT user_name FROM bsc_user_t A group by user_name limit 100
但是這樣不太能符合原本需要的功能,而且老項(xiàng)目有很多這樣的不標(biāo)準(zhǔn)語(yǔ)句,都改不現(xiàn)實(shí)。

二、解決方法
修改數(shù)據(jù)庫(kù)配置。搜到2種方法:
1.臨時(shí)關(guān)閉only_full_group_by模式
(1)先查看自己的數(shù)據(jù)庫(kù)是怎么配置的:
show VARIABLES LIKE '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
(2)然后,把ONLY_FULL_GROUP_BY去掉,再設(shè)置下:
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';
(3)注意這種方法,重啟mysql后會(huì)失效
2.永久關(guān)閉only_full_group_by模式
(1) 找到配置文件/etc/my.cnf(或則關(guān)聯(lián)文件夾找到mysql-server.cnf)
(2) 找到當(dāng)前配置的sql_mode那行,去掉ONLY_FULL_GROUP_BY;
如果沒有,就在文件內(nèi)的[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'
(3)保存配置文件后,重啟Mysql。
三、備注
本人執(zhí)行
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';
報(bào)錯(cuò)了:
[Err] 1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
說(shuō)明當(dāng)前用戶沒有權(quán)限;需要聯(lián)系管理員執(zhí)行才行;
改服務(wù)器配置也同理,如果沒有權(quán)限,聯(lián)系管理員。
總結(jié)
到此這篇關(guān)于執(zhí)行sql報(bào)錯(cuò)only_full_group_by的2種解決方法的文章就介紹到這了,更多相關(guān)執(zhí)行sql報(bào)錯(cuò)only_full_group_by內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql 實(shí)現(xiàn)設(shè)置多個(gè)主鍵的操作
這篇文章主要介紹了mysql 實(shí)現(xiàn)設(shè)置多個(gè)主鍵的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2021-02-02
MySQL數(shù)據(jù)庫(kù)的23個(gè)注意事項(xiàng)
使用MySQL,安全問題不能不注意。以下是MySQL提示的23個(gè)注意事項(xiàng)2010-03-03
MySQL存儲(chǔ)過程之流程控制while,repeat,loop循環(huán)
這篇文章主要介紹了MySQL存儲(chǔ)過程之流程控制while,repeat,loop循環(huán),循環(huán)中的代碼會(huì)運(yùn)行特定的次數(shù),或者是運(yùn)行到特定條件成立時(shí)結(jié)束循環(huán)2022-07-07
MySQL實(shí)現(xiàn)字段分割一行轉(zhuǎn)多行的示例代碼
這篇文章主要介紹了MySQL實(shí)現(xiàn)字段分割一行轉(zhuǎn)多行的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
MySQL插入、更新與刪除表中數(shù)據(jù)實(shí)現(xiàn)方式
本文介紹了MySQL數(shù)據(jù)插入、更新和刪除的操作方法,包括直接添加、沒有字段名添加、部分字段添加、多行添加等插入方法,UPDATE語(yǔ)句更新記錄,DELETE語(yǔ)句刪除記錄,以及TRUNCATE語(yǔ)句刪除表中所有記錄,最后總結(jié)了TRUNCATE與DELETE的區(qū)別2026-04-04
Linux7.6二進(jìn)制安裝Mysql8.0.27詳細(xì)操作步驟
大家好,本篇文章主要講的是Linux7.6二進(jìn)制安裝Mysql8.0.27詳細(xì)操作步驟,感興趣的同學(xué)快來(lái)看一看吧,希望對(duì)你起到幫助2021-11-11

