1. 程式人生 > >關於Mysql5.7高版本使用group by新特性報錯

關於Mysql5.7高版本使用group by新特性報錯

進入mysql客戶端(navicat),開啟命令列介面,執行語句:

select @@GLOBAL.sql_mode;

會發現查詢出來的結果是:

+--------------------------------------------------------------------------------------------------------------------------------------+ | @@GLOBAL.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  +--------------------------------------------------------------------------------------------------------------------------------------+

裡面是含有 ONLY_FULL_GROUP_BY,而我們要做的就是要去掉這玩意;

那麼怎麼去掉呢,直接在客戶端執行命令關掉不就可以了麼,set @@global.sql_mode = .......,執行成功,然後執行命令檢視一下,果然第一項不在了,然後我們再重啟一下mysql服務,再次查詢,還在..哈哈。。

那麼,接下來放絕招了,還是從Mysql的配置檔案下手吧。

找到my.cnf(linux中的路勁在etc中),編輯它~把以下命令放到合適位置,重啟mysql 服務,OK~報錯沒啦~

[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

那這條語句放到“[mysqld]”下面即可;

千萬要注意的是,網上很多方案都差不多,但是就是成功不了,原因是網上很多帖子給出的方案都是前面多了一個set,按照上面的方法就可以了~

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       
//前面多了個set 是不對滴~