Я обновил наш сервер до Ubuntu 16, которая включает Mysql 5.7 и, по умолчанию, Строгий Режим включен (хотя нет никакой записи для него ни в одном из конфигурационных файлов).
У нас есть базы данных импорта проблем, которые работали под mysql 5.6 и ранее, и это из-за строгого режима. По умолчанию вот то, что включено:
STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
Как я могу настроить mysql 5.7 для работы точно, как он сделал в 5,6 или так, чтобы базы данных от 5,6 были совместимы с 5,7?
Отключить строгий режим SQL, SSH в к Вашему серверу как root
и создать этот файл:
/etc/mysql/conf.d/disable_strict_mode.cnf
Открывают файл и вводят эти две строки:
[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
MySQL Restart с этой командой:
sudo service mysql restart
Это изменение отключает две настройки режима SQL, STRICT_TRANS_TABLES
и ONLY_FULL_GROUP_BY
, которые были добавлены в MySQL 5.7 и проблемах причины для некоторых более старых приложений.
, можно подтвердить, что строгий режим SQL отключен путем выполнения этой команды как root
:
sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'
, Если строгий режим отключен, Вы не будете видеть вывода от той команды.
При отключении строгого режима вызывает любые проблемы для Вас, можно включить его снова путем удаления того файла и перезапуска MySQL снова.
Набор sql_mode
в /etc/mysql/mysql.conf.d/mysqld.cnf
без STRICT_TRANS_TABLES
.
Добавьте под [mysqld]
:
sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION