我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
当前回答
MySQL文档还指定了以下方法:
在选项文件(如my.cnf(Unix操作系统)或my.ini(Windows))中设置sql mode=“<mode>”。要通过命令行在服务器启动时设置SQL模式,请使用--SQL mode=“<modes>”选项。
*其中<modes>是用逗号分隔的不同模式列表。
要显式清除SQL模式,请在命令行上使用--sqlmode=“”或在选项文件中使用sqlmode=”将其设置为空字符串。
我在/etc/my.cnf中添加了sqlmode=“”选项,并成功了。
这个SO解决方案讨论了找出MySQL正在使用哪个my.cnf文件的方法。
进行更改后不要忘记重新启动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并单击保存。
如果您正在使用WAMP。左键单击WAMP图标,然后转到MySQL->MySQL设置->sql模式然后选择sql模式->用户模式
使用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'
您可以使用配置文件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"
对于使用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)”并重新启动服务