Zaktualizowałem nasz serwer do Ubuntu 16, który zawiera Mysql 5.7 i domyślnie włączony jest tryb ścisły (chociaż nie ma na niego wpisu w żadnym z plików konfiguracyjnych).
Mamy problemy z importowaniem baz danych, które były w produkcji w wersji mysql 5.6 i wcześniejszych, i to z powodu trybu ścisłego. Domyślnie oto, co jest włączone:
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
Jak mogę skonfigurować mysql 5.7 tak, aby działał dokładnie tak, jak w wersji 5.6, aby bazy danych z wersji 5.6 były zgodne z wersją 5.7?
Odpowiedzi:
Aby wyłączyć tryb ścisłego SQL, włóż SSH do serwera jako
root
i utwórz ten plik:Otwórz plik i wprowadź następujące dwa wiersze:
Uruchom ponownie MySQL za pomocą tego polecenia:
Zmiana ta wyłącza dwa ustawienia trybu SQL,
STRICT_TRANS_TABLES
orazONLY_FULL_GROUP_BY
, że zostały dodane w MySQL 5.7 i stwarzają problemy dla niektórych starszych aplikacji.Potwierdzanie ścisłego trybu SQL jest wyłączone
Możesz potwierdzić, że tryb ścisłego SQL jest wyłączony, uruchamiając to polecenie jako
root
:Jeśli tryb ścisły jest wyłączony, nie zobaczysz żadnych danych wyjściowych z tego polecenia.
Jeśli wyłączenie trybu ścisłego powoduje jakiekolwiek problemy, możesz włączyć go ponownie, usuwając ten plik i ponownie uruchamiając MySQL.
Źródło: Jak wyłączyć tryb ścisłego SQL w MySQL 5.7
źródło
mysql: [ERROR] Found option without preceding group in config file /etc/mysql/conf.d/disable_strict_mode.cnf at line 1!
?Ustaw
sql_mode
w/etc/mysql/mysql.conf.d/mysqld.cnf
bezSTRICT_TRANS_TABLES
.Dodaj poniżej
[mysqld]
:źródło