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

Невозможно установить SQL_MODE в Mysql 8

Я должен установить постоянный пользовательский РЕЖИМ SQL, постоянный для моего сервера. Я добавил эту строку в /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
...
sql-mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Когда я пытаюсь запустить mysql, я получаю эту ошибку:

2020-06-03T09: 49: 24.567568Z 0 [ОШИБКА] [MY-000077] [Сервер] / usr / sbin / mysqld: ошибка при установке значения 'STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_mode' в 'sqrt_mode', NO_ENGINE_mode ' mysqld Ver 8.0.20-0ubuntu0.20.04.1 для Linux на x86_64 ((Ubuntu))

Я пытался изменить sql-mode к sql_mode и удалите двойные кавычки, но это не изменится.

Есть некоторые ограничения на поведение sql_mode в разных средах Linux.

Вместо этого вам следует удалить mysql и замените его на MariaDB. Очень хорошая альтернатива серверу mysql. (Насколько вам известно - это сервер mysql, за исключением имени пакета)

Чтобы удалить:

apt remove mysql mysqld mysql-server mysql-client
# note we do not purge this package, since we have databases with data in place.

Теперь установите MariaDB - https://downloads.mariadb.org/mariadb/repositories/#distro=Ubuntu&distro_release=focal--ubuntu_focal&mirror=icm&version=10.4

Иногда у сопровождающего пакета уже есть MariaDB. Итак, это просто:

apt install mariadb mariadb-server mariadb-client

Прошу вас заранее сделать резервную копию ваших данных, используя mysqldump или другими способами. Но отмечу, что установка maraidb (до тех пор, пока он будет использовать один и тот же каталог для данных), тогда все ваши базы данных и таблицы будут работать нормально.

В последних версиях Ubuntu / Debian я изменяю файл:
/lib/systemd/system/mysql.service

ExecStart=/usr/sbin/mysqld --sql-mode=NO_ENGINE_SUBSTITUTION

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

systemctl daemon-reload
systemctl restart mysql

изменения в файлах * .cnf ничего не делают