我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
当前回答
如果您正在使用WAMP。左键单击WAMP图标,然后转到MySQL->MySQL设置->sql模式然后选择sql模式->用户模式
其他回答
试试看:
SET sql_mode = ''
社区注意:正如下面的答案所指出的,这实际上清除了当前启用的所有SQL模式。这不一定是你想要的。
您可以使用配置文件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"
这是我在Mysql工作台上修复的操作:
在我使用以下命令获得当前值之前
SELECT @@sql_mode
后来,我从列表中删除了ONLY_FUL_GROUP_BY键,并粘贴了以下命令
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'
小心使用
SET sql_mode = ''
这实际上清除了当前启用的所有模式。如果你不想弄乱其他设置,你可以做一个
SELECT @@sql_mode
首先,要获得一个以逗号分隔的启用模式列表,然后将其设置为该列表,而不使用ONLY_FUL_GROUP_BY选项。
在MySQL 5.7和Ubuntu 16.04上,编辑文件MySQL.cnf。
$ sudo nano /etc/mysql/conf.d/mysql.cnf
包括如下所示的sql_mode并保存文件。
[mysql]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
注意,在我的例子中,我删除了模式STRICT_TRANS_TABLES和ONLY_FUL_GROUP_BY。
这样做,它将永久保存模式配置。如果您只是通过MySQL更新@@sql_mode,则会有所不同,因为它会在机器/服务重新启动时重置。
之后,要使修改后的配置生效,请重新启动mysql服务:
$ sudo service mysql restart
尝试访问mysql:
$ mysql -u user_name -p
如果您能够登录并访问MySQL控制台,那就好了。太好了!
但是,如果像我一样,您会遇到错误“未知变量sql_mode”,这表明sql_mode是mysqld的一个选项,那么您必须返回,再次编辑文件mysql.cnf并将[mysql]更改为[mysqld]。重新启动MySQL服务并进行最后一次测试,尝试登录MySQL控制台。给你!