欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql怎么關(guān)閉sql_mode=ONLY_FULL_GROUP_BY模式

 更新時間:2024年01月15日 11:45:05   作者:July.F  
前段時間在項目開發(fā)過程中發(fā)現(xiàn)了系統(tǒng)異常,打開日志查看發(fā)現(xiàn)了如下的這個報錯,查找相關(guān)資料終于解決了,這篇文章主要給大家介紹了關(guān)于mysql怎么關(guān)閉sql_mode=ONLY_FULL_GROUP_BY模式的相關(guān)資料,需要的朋友可以參考下

JAVA后臺報錯信息:

Caused by: java.sql.SQLSyntaxErrorException: Expression #16 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mysql_data.s.k_persion' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with

原因: mysql默認(rèn)開啟only_full_group_by模式,當(dāng)碰到不符合格式的group by 語句就會報錯;(sql_mode=only_full_group_by 模式 要求 select 多少個字段對象,則group by 后面就需要帶上多少個字段對象;)
例如sql語句如下:

-- 查詢?nèi)藛T信息,按部門分組,顯示姓名和部門
SELECT S.PSL_NAME,S.DEPARTMENT  FROM k_persion S GROUP BY DEPARTMENT

運(yùn)行時就會報錯:

 Caused by: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column  'mysql_data.k_persion .PSL_NAME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by  

其大體的意思就是這個sql語句不符合 mysql_data 數(shù)據(jù)庫的group by 格式要求(因為這個數(shù)據(jù)sql_mode=only_full_group_by),但我們把當(dāng)sql改成如下格式后就可以運(yùn)行了:

-- 查詢?nèi)藛T信息,按部門分組,顯示姓名和部門
SELECT S.PSL_NAME,S.DEPARTMENT  FROM k_persion S GROUP BY DEPARTMENT,PSL_NAME

這樣的格式是不報錯了,但是查詢的目標(biāo)效果卻錯了;因此我們需要把sql_mode 的 only_full_group_by模式關(guān)掉。

解決方式:1、臨時關(guān)閉(當(dāng)mysql重啟后失效):使用sql語句修改的方式修改sql_mode 的Session級和GLOBAL級信息
查看sql_mode 的信息

-- 查看數(shù)據(jù)庫版本和 Session級信息
SELECT VERSION(),@@sql_mode;
-- 查看數(shù)據(jù)庫版本和 GLOBAL級信息
SELECT VERSION(),@@GLOBAL.sql_mode;

我們發(fā)現(xiàn)在對應(yīng)的sql_mode列中都含有 ONLY_FULL_GROUP_BY 參數(shù),因此我們需要把這個屬性去掉,打開數(shù)據(jù)庫查詢界面,運(yùn)行如下語句;

 -- 關(guān)閉 session級
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

-- 關(guān)閉 GLOBAL級
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

再查詢sql_mode后發(fā)現(xiàn)ONLY_FULL_GROUP_BY 已經(jīng)沒有了,然后再運(yùn)行我們的sql語句就不報錯了。

2、永久關(guān)閉:永久關(guān)閉ONLY_FULL_GROUP_BY,需要去修改mysql服務(wù)的配置文件my.ini 文件,本人是Win10服務(wù),若是linux服務(wù)環(huán)境,應(yīng)該是 XX/etc/my.cnf 的文件。(若想永久生效,修改配置文件是永恒不變的真理…)

找到mysql的my.ini 文件(在mysql服務(wù)安裝的路徑下找),打開文件在[mysqld] 中添加如下語句:

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

如下圖:

保存后重啟mysql服務(wù)即可。

若不確定自己的sql_mode=‘xxxx’ 到底要有哪些參數(shù),可以通過 SELECT @@sql_mode; 查詢出自己數(shù)據(jù)庫現(xiàn)有的參數(shù),然后ONLY_FULL_GROUP_BY對象去掉即可。

總結(jié)

到此這篇關(guān)于mysql怎么關(guān)閉sql_mode=ONLY_FULL_GROUP_BY模式的文章就介紹到這了,更多相關(guān)關(guān)閉sql_mode=ONLY_FULL_GROUP_BY模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 查看當(dāng)前mysql使用頻繁的sql語句(詳解)

    查看當(dāng)前mysql使用頻繁的sql語句(詳解)

    下面小編就為大家?guī)硪黄榭串?dāng)前mysql使用頻繁的sql語句(詳解)。小編覺的挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • mysql之如何查找配置文件my.ini的位置

    mysql之如何查找配置文件my.ini的位置

    這篇文章主要介紹了mysql之如何查找配置文件my.ini的位置問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mysql-8.0.11-winx64.zip安裝教程詳解

    mysql-8.0.11-winx64.zip安裝教程詳解

    這篇文章主要介紹了mysql-8.0.11-winx64.zip安裝教程詳解及注意事項,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2018-05-05
  • mysql 5.7.24 安裝配置圖文教程

    mysql 5.7.24 安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.24 安裝配置圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Ubuntu自啟動Mysql的三種方式

    Ubuntu自啟動Mysql的三種方式

    本文給大家介紹ubuntu自啟動mysql的三種方式,一種方法通過執(zhí)行命令,也是最簡單的方法,第二種方法是使用sysv-rc-cont工具,第三種方法是使用chkconfig工具,關(guān)于以上三種方式的詳解請看下文
    2015-10-10
  • 利用Sqoop實(shí)現(xiàn)MySQL數(shù)據(jù)導(dǎo)入Hive的全流程

    利用Sqoop實(shí)現(xiàn)MySQL數(shù)據(jù)導(dǎo)入Hive的全流程

    在大數(shù)據(jù)領(lǐng)域中,MySQL 和 Hive 是兩種常見的存儲工具,MySQL 適合事務(wù)處理,而 Hive 則是用于離線數(shù)據(jù)分析的利器,本文將全面講解如何使用 Sqoop 將 MySQL 數(shù)據(jù)導(dǎo)入 Hive 的完整流程,包括環(huán)境配置、具體操作步驟以及最佳實(shí)踐和常見問題解決方案,需要的朋友可以參考下
    2024-12-12
  • mysqld_multi在Linux服務(wù)器上運(yùn)行多個MySQL實(shí)例

    mysqld_multi在Linux服務(wù)器上運(yùn)行多個MySQL實(shí)例

    在Linux系統(tǒng)上使用mysqld_multi來啟動和管理多個MySQL實(shí)例是一種常見的做法,這種方式允許你在同一臺機(jī)器上運(yùn)行多個MySQL服務(wù),每個服務(wù)可以有不同的配置和數(shù)據(jù)目錄,這篇文章展示如何設(shè)置和使用mysqld_multi來啟動多個MySQL實(shí)例
    2025-02-02
  • 用SELECT... INTO OUTFILE語句導(dǎo)出MySQL數(shù)據(jù)的教程

    用SELECT... INTO OUTFILE語句導(dǎo)出MySQL數(shù)據(jù)的教程

    這篇文章主要介紹了用SELECT... INTO OUTFILE語句導(dǎo)出MySQL數(shù)據(jù)的教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • 安裝MySQL后include目錄下沒有找到libmysql.lib

    安裝MySQL后include目錄下沒有找到libmysql.lib

    安裝了MySQL后,在其安裝目錄下的include文件夾并沒有找到libmysql.lib,主要原因是在安裝MySQL的時候,沒有勾選develop component這一選項造成的
    2014-08-08
  • mysql數(shù)據(jù)遷移到Oracle的正確方法

    mysql數(shù)據(jù)遷移到Oracle的正確方法

    這篇文章主要為大家詳細(xì)介紹了mysql數(shù)據(jù)遷移到Oracle的正確方法,文中步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02

最新評論