2023-05-10 08:00:02

禁用ONLY_FUL_GROUP_BY

我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:

SET sql_mode = 'ONLY_FULL_GROUP_BY';

如何禁用它?


当前回答

这对我有用:

SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

其他回答

小心使用

SET sql_mode = '' 

这实际上清除了当前启用的所有模式。如果你不想弄乱其他设置,你可以做一个

SELECT @@sql_mode 

首先,要获得一个以逗号分隔的启用模式列表,然后将其设置为该列表,而不使用ONLY_FUL_GROUP_BY选项。

如果sql_mode上有ANSI,需要注意一点:

等效于REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE和(从MySQL 5.7.5开始)ONLY_FUL_GROUP_BY。

看见https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi

这对我有用:

SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

检查sql_mode的默认值:SELECT@@sql_mode;通过执行以下查询从控制台中删除ONLY_FUL_GROUP_BY:

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FUL_GROUP_BY',''));

还将其从特定数据库中删除

使用数据库名称;

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FUL_GROUP_BY',''));

重新启动web应用服务器访问导致此问题的页面。现在就可以了。

OR

在my.cnf文件中添加以下内容sql_mode=“传统”

注意:如果您正在使用mac my.cnf,可以在/usr/local/etc/my.cnf中找到

或尝试此链接https://dev.mysql.com/doc/refman/8.0/en/option-files.html

重新启动MySQL服务器sudo/usr/local/bin/mysql.server重启或brew服务重新启动mysql

使用MySQL 5.7.28版检查SELECT@@sql_mode;并使用更新

SET @@sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'