因此,如果我从终端执行以下查询:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
我可以无问题地执行我的查询。现在,如果我尝试重新启动我的MacBook,我会遇到同样的问题,我无法重新执行查询。
有没有办法永久解决这个sql_mode的问题?
我已经尝试打开“etc/mysql/my.cnf”文件,但是在我的Mac上找不到这个文件。我该如何应用这个更改?
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
我可以无问题地执行我的查询。现在,如果我尝试重新启动我的MacBook,我会遇到同样的问题,我无法重新执行查询。
有没有办法永久解决这个sql_mode的问题?
我已经尝试打开“etc/mysql/my.cnf”文件,但是在我的Mac上找不到这个文件。我该如何应用这个更改?
您可以设置my.cnf并添加您的sql_mode配置
[mysqld]
sql_mode=ONLY_FULL_GROUP_BY
默认情况下,OS X 安装不使用 my.cnf 文件,MySQL 仅使用默认值。要设置您自己的 my.cnf,您可以直接在 /etc 中创建一个文件。
然后,在[mysqld]标题下面添加您想要的sql_mode。例如:您无法直接编辑my.cnf文件。您必须使用MAMP PRO接口来编辑my.cnf文件。在菜单中转到“File”>“Edit Template”>“MySQL”>“my.cnf”。
[mysqld]
sql_mode=ONLY_FULL_GROUP_BY
这是对我有效的方法。
mysql> show variables like 'sql_mode'\G
*************************** 1. row ***************************
Variable_name: sql_mode
Value: 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
1 row in set (0,01 sec)
编辑MySQL配置文件my.conf。通常在/etc/my.cnf中,就像scaisEdge所说的那样。
[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
(所有值都不包括ONLY_FULL_GROUP_BY - 您可以复制/粘贴此行)
重新启动您的MySQL,然后享受它。
按照以下步骤正确操作:
退出MAMP。
在终端中运行以下命令:
touch /Applications/MAMP/conf/my.cnf && open -t /Applications/MAMP/conf/my.cnf
如果该文件为空,则在以下内容下面添加。如果该文件不为空,则在[mysqld]行之后简单地添加sql_mode=""一行即可。
[mysqld] sql_mode=""
保存配置文件并关闭文本编辑器;重新启动MAMP并启动服务器。
参考: https://mampsupportforum.com/forums/latest/mamp-mamp-pro-disable-mysql-strict-mode