關於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 是不對滴~