Назад | Перейти на главную страницу

Невозможно изменить Mariadb / Mysql sql_mode

У меня установлен сервер ubuntu 16.04.3 под управлением Mariadb и недавно обновлен до 10.2.9-MariaDB. После предыдущего обновления у меня теперь есть sql_mode, выглядящий как 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', предположительно по умолчанию, но мне нужно внести некоторые изменения. А именно бросая NO_ZERO_DATE и потенциально STRICT_TRANS_TABLES чтобы приложение снова заработало.

Проблема в том, что я добавил конкретный sql_mode = в несколько файлов .cnf (параметры) (перечисленных на снимке экрана), возвращал / перезапускал сервер mysql после каждого изменения, возвращал весь сервер и ничего! Без изменений в запросе > SELECT @@GLOBAL.sql_mode global;.

googl не помогает - что мне не хватает?

Обновление: я наконец понял, откуда взялись настройки по умолчанию. в /etc/mysql/my.cnf содержит sql_mode = NO_ENGINE_SUBSTITUTION,TRADITIONAL. И учитывая:

TRADITIONAL | Makes MariaDB work like a traditional SQL server. Same as:

STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL, NO_AUTO_CREATE_USER

Это говорит мне, что каскад .cnf's НЕ ПРОЧИТАЕТСЯ, как ожидалось.

Это не ответ на OP, но может ответить на чужой поиск в Google, когда они попадут на эту страницу (как я только что сделал):

У меня возникли проблемы с настройкой sql-режима в my.cnf потому что между отдельными настройками были пробелы. Другими словами, это сработало:

[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"

Этого не произошло:

[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" Примечание: строка sql-mode находится в одной строке - перенос слов в Stack-Exchange переносит ее на вторую строку здесь.

К сожалению, рабочая среда MySQL сгенерировала для меня конфигурацию с пробелами, но MySQL не сказал мне, в чем проблема my.cnf был.

Я использую MySQL 5.7 на Ubuntu 18.04

Удаление TRADITIONAL из обновленного sql-режим значение решает и предотвращает TRADITIONAL от расширения в STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL, NO_AUTO_CREATE_USER