mysql 5.7.12 - 禁用only_full_group_by sql_mode并不完全成功

时间:2016-07-15 06:45:51

标签: mysql web-applications installation mode mysql-5.7

我在Ubuntu 16.04上使用mysql版本5.7.12。运行我的Web应用程序时,我注意到以下异常:

  

SQL异常:SELECT列表的表达式#x不在GROUP BY子句中,并且包含非聚合列' something.something'它在功能上不依赖于GROUP 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秒)

启动我的webapp后,我发现它确实适用于某些查询,但对于其他查询,它仍然会抛出相同的异常。我不知道该怎么做。请帮我解决这个问题。

由于

1 个答案:

答案 0 :(得分:1)

请检查文件系统中多次出现的my.cnf文件,该文件可能会覆盖上面指定的sql_mode。