Как можно установить SQL_MODE навсегда на моем Mac

Я устанавливаю MySql на мой OsX 10.11 El Capitan. Если я пытаюсь начать свой запрос, у меня появляется странная ошибка, если в моем запросе есть Group By.

Поэтому, если я попытаюсь выполнить этот запрос из терминала:

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

Я могу выполнить свой запрос никогда не проблема. Теперь, если я попытаюсь перезапустить мой macbook, у меня возникнет некоторая проблема, и я смогу повторно выполнить запрос.

Есть ли способ исправить этот sql_mode навсегда?

Мне нужно открыть файл "etc/mysql/my.cnf", но на моем Mac этого файла нет. Как я могу применить это изменение?

3 ответа

Вы можете установить my.cnf и добавить конфигурацию sql_mode

  [mysqld]
  sql_mode=ONLY_FULL_GROUP_BY

По умолчанию установка OS X не использует my.cnf, а MySQL просто использует значения по умолчанию. Чтобы создать свой собственный my.cnf, вы можете просто создать файл прямо в /etc.

Если вы используете MAMP PRO, стоит отметить это из руководства:

Вы не можете редактировать файл my.cnf напрямую. Вы должны использовать интерфейс MAMP PRO для редактирования файла my.cnf. В меню выберите "Файл"> "Редактировать шаблон"> "MySQL"> "my.cnf".

Затем вы можете добавить нужный sql_mode под заголовком [mysqld]. например:

[mysqld]
sql_mode=ONLY_FULL_GROUP_BY

Это то, что сработало для меня.

Если вы хотите отключить 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. Закройте MAMP.

  2. Выполните следующую команду в Терминале:

    коснитесь /Applications/MAMP/conf/my.cnf && open -t /Applications/MAMP/conf/my.cnf

  3. Когда этот файл пуст, добавьте следующее ниже. Если файл не пустой, просто добавьте строку sql_mode="" сразу после строки [mysqld]

    [mysqld]sql_mode=""

  4. Сохраните файл конфигурации и закройте текстовый редактор; перезапустите MAMP и запустите серверы.

ссылка: https://mampsupportforum.com/forums/latest/mamp-mamp-pro-disable-mysql-strict-mode

Другие вопросы по тегам