Я должен установить постоянный пользовательский РЕЖИМ 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 ничего не делают