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

Man*_*hew 5 mysql installation web-applications 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 。通过将以下几行附加到 my.cnf 的末尾并重新启动 mysql。

[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
Run Code Online (Sandbox Code Playgroud)

为了验证它是否有效,我在 mysql 控制台中尝试了以下命令:

SELECT @@sql_mode;

SELECT @@GLOBAL.sql_mode;

SELECT @@SESSION.sql_mode;
Run Code Online (Sandbox Code Playgroud)

所有这些都返回了相同的结果,如下所示:

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

1 行(0.00 秒)

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

谢谢

pav*_*avi 2

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