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

解決MySql版本問題sql_mode=only_full_group_by

 更新時間:2022年11月17日 10:27:32   作者:XiaoMaPro  
這篇文章主要介紹了解決MySql版本問題sql_mode=only_full_group_by,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

MySql版本問題sql_mode=only_full_group_by

查看sql_mode

select @@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

在查出結(jié)果中可以看到里面包含了ONLY_FULL_GROUP_BY,因此我們要講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';

上面是改變了全局sql_mode,對于新建的數(shù)據(jù)庫有效。對于已存在的數(shù)據(jù)庫,則需要在對應(yīng)的數(shù)據(jù)下執(zhí)行

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';

修改配置文件去除ONLY_FULL_GROUP_BY這種方式是我個人比較喜歡的.

打開配置文件mysql.cnf

sudo vi /etc/mysql/mysql.cnf

添加配置

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

sudo service mysql restart

進入mysql查看:

SELECT @@sql_mode;

Windows

在Windows修改mysql安裝目錄下面配置未見 my.ini,在文件中添加

[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

sql_mode=only_full_group_by以及多種解決方案

出錯的sql情況

// mysql
SELECT
?? ?*?
FROM
?? ?table t
GROUP BY
?? ?t.mobile_no

提示出錯:*** which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因:

mysql 5.7版本以上sql_mode新加入了only_full_group_by

解決方案1

修改sql_mode(容易被懟,因為大多都是在修改全局的sql_mode)

查看:

select @@sql_mode;

修改:

set @@sql_mode ='';

解決方案2

函數(shù) any_value()

(使用方案一,原本應(yīng)該是錯的sql語句依然執(zhí)行成功,但有時特殊情況,需要在select 下查詢除group以外的值)

SELECT
?? ?any_value(t.id),
?? ?t.mobile_no
FROM
?? ?table t
GROUP BY
?? ?t.mobile_no

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論