這裏有一個解決方法,以使MySQL 5.7的行爲就像以前的版本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
您看到的錯誤是由ONLY_FULL_GROUP_BY
標誌引起的。您可以更新您的MySQL配置文件以刪除該標誌。查找並編輯您的my.cnf
文件(IIRC,您可以從任務欄圖標中的WAMP菜單訪問它,但是自從我上次使用WAMP以來可能已經改變了幾年)。
檢查在那裏是否已經定義了sql_mode
。如果沒有,請將其添加到[mysqld]
標題下的某處。使其值與您從前面的查詢中獲得的sql_mode
相同,減去ONLY_FULL_GROUP_BY
的標誌。所以在我的情況下,這將是:
[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"
保存文件並重啓MySQL加載的變化。
請注意,在下次更新WAMP時,對my.cnf
文件所做的更改很可能會被覆蓋,因此這不是永久性解決方案。對於永久修復,您應該更新您的查詢以與默認sql_mode
兼容。
你用來執行查詢的PHP版本和PHP代碼是什麼? – AbraCadaver
這是PHP5.6.25。 –
沒有發佈這個答案,因爲這是一個解決方法,而不是解決方案。我的默認解決方案是更新我的MySQL配置,以將'sql_mode'設置爲不包含'only_full_group_by'的。不過,我有興趣瞭解適當的解決方案。 – rickdenhaan