我在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應用程序後,我發現它確實適用於某些查詢,但對於其他查詢,它仍然會拋出相同的異常。我不知道該怎麼辦。請幫我解決這個問題。
感謝