Подтвердить что ты не робот

Как избавиться от режима STRICT SQL в MySQL

Это соответствует следующему вопросу Неверный формат DATETIME MYSQL

Как избавиться от STRICT_TRANS_TABLES раз и навсегда?

mysql --help сообщает о следующих конфигурациях:

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

$ ls  /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
ls: /Users/pain/.my.cnf: No such file or directory
ls: /etc/mysql/my.cnf: No such file or directory
ls: /usr/local/etc/my.cnf: No such file or directory
/etc/my.cnf

$ cat /etc/my.cnf
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

Но это не помогает. У меня есть код устаревшего кода, и каждый раз, когда я перезагружаю компьютер, мне нужно запустить mysql и изменить sql_mode.

Обновление

Итак, я отказался от Homebrew-установленного MySQL и загрузил его с mysql.com. Но это тоже не помогло. После ответов здесь: Как исправить неизвестную переменную sql-mode = ANSI'`? Я пробовал разные варианты /etc/my.cnf: [mysql], [mysqld], sql_mode, sql-mode - ничего не помогло.

4b9b3361

Ответ 1

Итак, в конце я удалил MySQL-сервер, который я получил с mysql.com, переустановил его через Homebrew и должен был отредактировать

/usr/local/Cellar/mysql/5.6.xx/my.cnf

Где я мог бы прокомментировать проклятый STRICT_TRANS_TABLES.

Однако это не объясняет, почему по умолчанию config переопределяет значение из /etc/my.cnf, но я потратил слишком много времени на это уже, как есть. И, кстати, я все еще не уверен, что делать с предоставленным mysql.com дистрибутивом.

Ответ 2

Эта проблема тоже помогала мне. Ни один из ответов до сих пор не рассматривал первоначальную проблему, но я считаю, что моя делает так, что я опубликую ее, если она поможет кому-то еще.

У меня есть MySQL (от mysql.com) Community Edition 5.7.10, установленный в OS X 10.10.3

В конце я создал /etc/mysql/my.cnf со следующим содержимым: -

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION

После перезапуска сервера a SHOW VARIABLES LIKE 'sql_mode'; дал мне: -

+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| sql_mode      | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+
1 row in set (0.00 sec)

Наконец, нет строгой моды!

Ответ 3

В Centos 6.5 мне пришлось отредактировать /usr/my.cnf и установить (хотя /etc/my.cnf существует и привязки успешно установлены там

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

пакет был:

mysql-community-client.x86_64      5.6.16-1.el6            @mysql56-community

Ответ 4

В соответствии с MySQL Strict Mode в OS X проблемный параметр на самом деле находится в /usr/local/mysql/my.cnf и может быть прокомментирован, чтобы остановить это поведение.

Ответ 5

Я пробовал каждый ответ, который мог найти по этой проблеме, используя MySQL 5.7 в Mac OS 10.12, и в конечном итоге был отключен строгий режим не из-за местоположения my.cnf, который, вероятно, может быть в любом из мест, о котором говорит MySQL проверяет, но из-за проблемы с разрешениями UNIX.

Я использовал MySQL Workbench 6.2.3.12313 для создания my.cnf изначально. Это вызвало две возможные проблемы: во-первых, она установила опцию "sql-mode" вместо "sql_mode" и сделала файл (расположенный в /etc ) доступным для чтения и доступным для записи только для root. MySQL не запускается от имени root, когда вы устанавливаете его так, как я делал, из двоичного пакета на веб-сайте MySQL - он работает как _mysql. Таким образом, пользователь _mysql должен иметь возможность читать /etc/my.cnf или где бы вы его ни разместили. Чтобы это сработало, вам нужно запустить:

sudo chmod o+r /etc/my.cnf

и для хорошей меры вы также можете запустить:

sudo chmod g+r /etc/my.cnf

Затем обязательно перезапустите MySQL. (Я обнаружил, что это лучше всего работает на панели "Системные настройки" MySQL в Mac OS, а с помощью командной строки довольно беспорядочно, а функции MySQL Workbench просто не работают.) Пока у вас есть параметр sql_mode в my.cnf, не включает строгий режим, строгий режим должен быть выключен.

Ответ 6

Теперь вы не можете установить sql_mode в пустую строку, фактический запрос:

SET @@GLOBAL.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

MySQL 5.7.16

Ответ 8

В Mac OS X El Capitan я создал файл .my.cnf в домашнем каталоге пользователя и установил параметры для mysql в [mysqld], а затем перезапустил mysql. Отлично работает!