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

MySQL: настройка sql_mode постоянно

Через клиент командной строки MySQL я пытаюсь установить глобальный mysql_mode:

SET GLOBAL sql_mode = TRADITIONAL;

Это работает для текущего сеанса, но после перезапуска сервера sql_mode возвращается к своему по умолчанию: '' - пустая строка.

Как я могу навсегда установить sql_mode в TRADITIONAL?

Если это необходимо, MySQL является частью пакета WAMP.

Спасибо.

4b9b3361

Ответ 1

Добавьте это в свой файл my.cnf(или my.ini, если вы используете окна):

sql_mode="TRADITIONAL"

и перезапустите сервер

Ответ 2

MySQL sql_mode "TRADITIONAL", a.k.a. "строгий режим", определяется документами MySQL как:

"выдает ошибку вместо предупреждения" при вводе неправильного значения в столбец.

Здесь, как убедиться, что ваш sql_mode установлен на "TRADITIONAL".

Сначала проверьте текущую настройку:

mysql
mysql> SELECT @@GLOBAL.sql_mode;
+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
|                   |
+-------------------+
1 row in set (0.00 sec)

Это возвращает пустое значение по умолчанию, это плохо: ваш sql_mode не установлен в "TRADITIONAL".

Так отредактируйте файл конфигурации:

sudo vim /etc/mysql/my.cnf

Добавьте эту строку в раздел с меткой [mysqld]: sql_mode="TRADITIONAL" (как указывалось fancyPants)

Затем перезапустите сервер:

sudo service mysql restart

Затем снова проверьте:

mysql
mysql> SELECT @@GLOBAL.sql_mode;
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                                                                                    |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Успех! Теперь ты золотой.