天天看點

MYSQL5.7版本sql_mode=only_full_group_by問題

具體出錯提示:

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

解決辦法:

1.1. 檢視sql_mode. 

SELECT @@sql_mode

或:

<code>select @@global.sql_mode;</code>

1.2.  查詢出來的值為:

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

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,重新設定值。

上面是改變了全局sql_mode,對于建立的資料庫有效。對于已存在的資料庫,則需要在對應的資料下執行。

再檢視sql_mode.

确實是沒有 ONLY_FULL_GROUP了。

永久方法:

修改my.cnf

oneinstack安裝的系統,my.cnf在 etc/my.cnf。

vi etc/my.cnf,如果找不到sql_mode,則增加,

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

service mysqld restart.

再檢視:sql_mode.

OK!!!

解釋:

修改my.cnf(windows下是my.ini)配置檔案,删掉only_full_group_by這一項

下載下傳安裝的是最新版的mysql5.7.x版本,預設是開啟了 <code>only_full_group_by</code> 模式的,但開啟這個模式後,原先的 <code>group by</code> 語句就報錯,然後又把它移除了。

一旦開啟 <code>only_full_group_by</code> ,感覺,<code>group by</code> 将變成和 <code>distinct</code> 一樣,隻能擷取受到其影響的字段資訊,無法和其他未受其影響的字段共存,這樣,<code>group by</code> 的功能将變得十分狹窄了

<code>only_full_group_by</code> 模式開啟比較好。

因為在 <code>mysql</code> 中有一個函數: <code>any_value(field)</code> 允許,非分組字段的出現(和關閉 <code>only_full_group_by</code> 模式有相同效果)。

----------  招募未來大神 -----------------------

如果您有利他之心,樂于幫助他人,樂于分享

如果您遇到php問題,百度且問了其他群之後仍沒得到解答

歡迎加入,PHP技術問答群,QQ群:292626152

教學相長!幫助他人,自己也會得到提升!

為了珍惜每個人的寶貴時間,請大家不要閑聊!

願我們互相幫助,共同進步!

加入時留言暗号,php,ajax,thinkphp,yii...

     本文轉自phpervip 51CTO部落格,原文連結:,http://blog.51cto.com/phpervip/1960871如需轉載請自行聯系原作者