У меня установлен сервер 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