2023-05-10 08:00:02

禁用ONLY_FUL_GROUP_BY

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

SET sql_mode = 'ONLY_FULL_GROUP_BY';

如何禁用它?


当前回答

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

其他回答

对于使用cPanel/WHM运行VPS/Server的用户,可以执行以下操作永久禁用ONLY_FUL_GROUP_BY

您需要root访问权限(在VPS或专用服务器上)

输入WHM作为root用户并运行phpMyAdmin单击Variables,查找sql_mode,单击Edit,然后复制文本框中的整行

例如,复制以下内容:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

通过SFTP-SSH(root)连接到服务器,并下载文件/etc/my.cnf使用本地PC上的文本编辑器my.cnf文件打开,并将在步骤(2)中复制的整行粘贴到其中(在[mysqld]部分下),但删除ONLY_FUL_GROUP_BY,

例如粘贴此:

# disabling ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

保存my.cnf文件并将其上载回/etc/输入WHM并转到“WHM>重新启动服务>SQL Server(MySQL)”并重新启动服务

以下是我通过phpmyadmin仪表板更改Mysql配置的解决方案:

为了修复“这与sql_mode=only_full_group_by不兼容”:打开phpmyadmin并转到主页,然后选择“变量”子菜单。向下滚动以查找sql模式。编辑sql模式并删除“ONLY_FUL_GROUP_BY”保存它。

对于MySql 8,您可以尝试这个。(未在5.7中进行测试。希望它在那里也适用)

首先打开此文件

sudo vi/etc/mysql/my.cnf并将以下代码粘贴在上述文件的末尾

[mysqld]
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

然后通过运行这个sudo服务mysql restart重新启动mysql

解决方案1:从mysql控制台中删除ONLY_FUL_GROUP_BY

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

你可以在这里阅读更多

解决方案2:从phpmyadmin中删除ONLY_FUL_GROUP_BY

打开phpmyadmin并选择localhost单击菜单变量并向下滚动以进入sql模式单击编辑按钮更改值并删除ONLY_FUL_GROUP_BY并单击保存。

您可以使用配置文件my.cnf禁用它:

$ mysql --verbose --help | grep my.cnf

因此,在macOS 10.12中,它位于usr/local/etc/my.cnf。您可以在此处编辑sql_mode:

# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"