2023-05-10 08:00:02

禁用ONLY_FUL_GROUP_BY

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

SET sql_mode = 'ONLY_FULL_GROUP_BY';

如何禁用它?


当前回答

对于Mac OS Mojave(10.14)开放终端

$ sudo mkdir /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ cd /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ sudo nano my.cnf

粘贴以下内容:

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

保存和退出nano的快捷键:Ctrl+x和y,然后Enter

注意:您可能需要在这些命令中更新mysql-5.7.224-macos10.14-x86_64,只需检查在/usr/local中获得的正确文件夹名称/

希望它能帮助到某人!

其他回答

On:

Ubuntu 14.04mysql版本14.14 Distrib 5.7.16,适用于Linux(x86_64),使用EditLine包装器

Do:

$ sudo nano /etc/mysql/conf.d/mysql.cnf

复制和粘贴:

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

到文件底部

$ sudo service mysql restart

在我的sql(在Mac OS X上运行的5.7.11版本)上,我可以在mysql shell客户端上使用此功能:

SET
@@GLOBAL.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

根据MySQL 5.6文档,sql_mode默认为

MySQL 5.6.5及其后版本中的空白字符串5.6.6中的NO_ENGINE_SUBSTITUTION、STRICT_TRANS_TABLES+

mysql 5.6参考

借助以下查询禁用ONLY_FUL_GROUP_BY。

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

要启用ONLY_FUL_GROUP_BY,请使用以下查询。

SET sql_mode = 'ONLY_FULL_GROUP_BY';

试试看:

SET sql_mode = ''

社区注意:正如下面的答案所指出的,这实际上清除了当前启用的所有SQL模式。这不一定是你想要的。

    mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    mysql> exit;