mysql 5.7.12 - 禁用 only_full_group_by sql_mode 未完全成功
mysql 5.7.12 - Disabling only_full_group_by sql_mode is not fully successful
我在 Ubuntu 16.04 上使用 mysql 版本 5.7.12。我在 运行 我的 Web 应用程序时注意到以下异常:
SQL Exception : Expression #x of SELECT list is not in GROUP BY clause and contains nonaggregated column 'something.something' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
它曾经在 mysql 5.5 上完美运行。我在网上寻找解决方案。我可以理解为什么他们在 5.7 版中默认强制执行 only_full_group_by mysql_mode。但是,在这个阶段我不能再返回代码并继续更正查询。我选择通过按照建议 here 编辑 /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'
为了验证它是否有效,我在 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 row in set (0.00 sec)
启动我的 webapp 后,我发现它确实适用于某些查询,但对于其他查询它仍然抛出相同的异常。我不知道该怎么办。请帮我解决这个问题。
谢谢
请检查文件系统中是否多次出现 my.cnf 文件,这可能会覆盖上面指定的 sql_mode。
我在 Ubuntu 16.04 上使用 mysql 版本 5.7.12。我在 运行 我的 Web 应用程序时注意到以下异常:
SQL Exception : Expression #x of SELECT list is not in GROUP BY clause and contains nonaggregated column 'something.something' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
它曾经在 mysql 5.5 上完美运行。我在网上寻找解决方案。我可以理解为什么他们在 5.7 版中默认强制执行 only_full_group_by mysql_mode。但是,在这个阶段我不能再返回代码并继续更正查询。我选择通过按照建议 here 编辑 /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'
为了验证它是否有效,我在 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 row in set (0.00 sec)
启动我的 webapp 后,我发现它确实适用于某些查询,但对于其他查询它仍然抛出相同的异常。我不知道该怎么办。请帮我解决这个问题。
谢谢
请检查文件系统中是否多次出现 my.cnf 文件,这可能会覆盖上面指定的 sql_mode。