mysql Меняем sql_mode (режим работы) в конфигурационном файле -- пример

Forums:

В этой этой заметке мы расмотрим как поменять режим работы сервера mySQL, на примере выключения строго режима (опции STRICT_TRANS_TABLES).

Как исправить режим sql_mode

Находим в my.ini (или my.cnf на линуксе, например этот файл в ubuntu) секцию [mysqld] строку

[mysqld]
.....
..
# Set the SQL mode to strict
sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

###

(если такой строки там нет - получите её текущее состояние запросом)
И заменяем на строку (в данном случае оставляем все чтобы было, но убираем, например, опцию STRICT_TRANS_TABLES ):

sql-mode="ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONN"

###

-- на линуксе, возможно придётся править пустой файл, не забывайте перед строкой с опцией добавить секцию [mysqld] -- результат может выглядеть как-то так:


#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.

# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]

sql-mode="ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"

После чего перезапускаем MySQL сервер -- и убеждаемся, что режим изменился.

vedro-compota's picture

В mysql 8 https://dev.mysql.com/doc/relnotes/mysql... режим удален. его упоминание будет приводить к ошибке при перезапуске службы вида:

# service mysql restart
Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.

и ещё из логов:

/usr/sbin/mysqld: Error while setting value 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'.

_____________
матфак вгу и остальная классика =)