如何在我的Mac上永久设置SQL_MODE

4
我正在OsX 10.11 El Capitan上安装MySql。如果我尝试启动查询,并且该查询包含“Group By”语句,那么就会出现奇怪的错误。
因此,如果我从终端执行以下查询:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

我可以无问题地执行我的查询。现在,如果我尝试重新启动我的MacBook,我会遇到同样的问题,我无法重新执行查询。

有没有办法永久解决这个sql_mode的问题?

我已经尝试打开“etc/mysql/my.cnf”文件,但是在我的Mac上找不到这个文件。我该如何应用这个更改?

4个回答

7

您可以设置my.cnf并添加您的sql_mode配置

  [mysqld]
  sql_mode=ONLY_FULL_GROUP_BY

默认情况下,OS X 安装不使用 my.cnf 文件,MySQL 仅使用默认值。要设置您自己的 my.cnf,您可以直接在 /etc 中创建一个文件。


在 /etc 目录下创建 my.cnf 文件。 - ScaisEdge
我在TextWrangler程序中打开了一个新文件,但如果我尝试将其保存在etc上,则会出现错误。 - bircastri
我已经打开了Finder应用程序,转到->转到:等等/然后我创建了一个mysql文件夹,接着我使用这段代码创建了my.cnf文件:[mysqld] sql_mode "",但是我无法解决我的问题。 - bircastri
你可以使用 mysql --help 或者 mysql --help | grep my.cnf 来查找其他位置。 - ScaisEdge
我已经执行了您的命令,结果如下:首选项顺序为my.cnf、$MYSQL_TCP_PORT、/etc/my.cnf、/etc/mysql/my.cnf、/usr/local/mysql/etc/my.cnf和/.my.cnf。 - bircastri
显示剩余4条评论

4
如果您正在使用MAMP PRO,请注意来自指南的以下内容:

您无法直接编辑my.cnf文件。您必须使用MAMP PRO接口来编辑my.cnf文件。在菜单中转到“File”>“Edit Template”>“MySQL”>“my.cnf”。

然后,在[mysqld]标题下面添加您想要的sql_mode。例如:
[mysqld]
sql_mode=ONLY_FULL_GROUP_BY

这是对我有效的方法。


2
如果您想关闭ONLY_FULL_GROUP_BY,需要先检查sql_mode变量的值:
(默认值)
 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,然后享受它。


1

按照以下步骤正确操作:

  1. 退出MAMP。

  2. 在终端中运行以下命令:

    touch /Applications/MAMP/conf/my.cnf && open -t /Applications/MAMP/conf/my.cnf

  3. 如果该文件为空,则在以下内容下面添加。如果该文件不为空,则在[mysqld]行之后简单地添加sql_mode=""一行即可。

    [mysqld] sql_mode=""

  4. 保存配置文件并关闭文本编辑器;重新启动MAMP并启动服务器。

参考: https://mampsupportforum.com/forums/latest/mamp-mamp-pro-disable-mysql-strict-mode


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接