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

时间:2018-03-13 13:25:51

标签: mysql macos operating-system sql-mode

我在我的OsX 10.11 El Capitan上安装了MySql。如果我尝试启动查询,如果我的查询具有分组依据,则会出现奇怪的错误。

因此,如果我尝试从终端执行此查询:

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

我可以执行我的查询从来没有问题。现在如果我尝试重新启动我的macbook,我遇到了一些问题,我可以重新执行查询。

有什么方法可以永久修复这个sql_mode吗?

我有打开“etc / mysql / my.cnf”文件,但我的mac上没有这个文件。我该如何应用此更改?

4 个答案:

答案 0 :(得分:3)

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

  [mysqld]
  sql_mode=ONLY_FULL_GROUP_BY

默认情况下,OS X安装不使用my.cnf,MySQL只使用默认值。  要设置你自己的my.cnf,你可以直接在/ etc。

中创建一个文件

答案 1 :(得分:1)

如果要关闭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,享受。

答案 2 :(得分:1)

遵循这些步骤的正确方法

  1. 退出MAMP。

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

    触摸/Applications/MAMP/conf/my.cnf &&打开-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

答案 3 :(得分:0)

如果您使用的是 MAMP PRO ,则值得在指南中加以注意:

  

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

然后,您可以在[mysqld]标题下添加所需的sql_mode。例如:

[mysqld]
sql_mode=ONLY_FULL_GROUP_BY

这对我有用。