2016-07-15 30 views
2

我在Ubuntu 16.04上使用mysql版本5.7.12。我注意到以下異常,同時運行我的Web應用程序:mysql 5.7.12 - 禁用only_full_group_by sql_mode未完全成功

SQL異常:SELECT列表中的表達#x不是GROUP BY子句中包含非聚合列「something.something」,這並不功能依賴於組列BY子句;這是不符合sql_mode = only_full_group_by

它用於在MySQL 5.5上完美工作。我在網上尋找解決方案。我可以理解他們爲什麼在版本5.7中默認強制執行only_full_group_by mysql_mode。但是,在這個階段我無法回到代碼並繼續糾正查詢。我選擇通過編輯/etc/mysql/my.cnf文件來禁用此sql_mode,建議使用here。 通過將以下行添加到my.cnf的末尾並重新啓動mysql。

[mysqld] 
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 

爲了驗證它的工作原理我想在MySQL控制檯下面的命令:

SELECT @@sql_mode; 

SELECT @@GLOBAL.sql_mode; 

SELECT @@SESSION.sql_mode; 

所有這些返回相同的結果,如下圖所示:

+ ---- -------------------------------------------------- --------------------------------------- + | @@ GLOBAL.sql_mode | + ------------------------------------------------ --------------------------------------------- + | STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | + ------------------------------------------------ --------------------------------------------- +

1排(0.00秒)

開始我的web應用程序後,我發現它確實適用於某些查詢,但對於其他查詢,它仍然會拋出相同的異常。我不知道該怎麼辦。請幫我解決這個問題。

感謝

回答

1

請檢查my.cnf文件在文件系統中的多次出現,這可能是覆蓋在上述指定的sql_mode。

相關問題