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

4 回答 4

7

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

  [mysqld]
  sql_mode=ONLY_FULL_GROUP_BY

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

于 2018-03-13T13:30:30.730 回答
4

如果您使用的是MAMP PRO,请注意指南中的这一点:

您不能直接编辑 my.cnf 文件。您必须使用 MAMP PRO 界面来编辑您的 my.cnf 文件。在菜单中转到文件 > 编辑模板 > MySQL > my.cnf。

然后你可以在 [mysqld] 标题下添加你想要的 sql_mode。例如:

[mysqld]
sql_mode=ONLY_FULL_GROUP_BY

这对我有用。

于 2018-10-17T10:05:36.933 回答
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,然后享受吧。

于 2018-03-26T06:22:59.033 回答
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

于 2020-01-14T10:04:45.913 回答