Tryb ścisły MySQL i MariaDB kontroluje sposób obsługi nieprawidłowych lub brakujących wartości w zapytaniach zmieniających dane; obejmuje to instrukcje INSERT, UPDATE i CREATE TABLE. Przy włączonym trybie ścisłym MySQL, który jest stanem domyślnym, nieprawidłowe lub brakujące dane mogą powodować ostrzeżenia lub błędy podczas próby przetworzenia zapytania.
Gdy tryb ścisły jest wyłączony, w tym samym zapytaniu zostaną skorygowane nieprawidłowe lub brakujące wartości i wygenerowane zostanie proste ostrzeżenie. Może się to wydawać preferowanym wynikiem, jednak przy wyłączonym trybie ścisłym pewne działania mogą spowodować nieoczekiwane wyniki; na przykład, gdy wstawiana wartość przekroczy maksymalny limit znaków, zostanie obcięta, aby zmieścić się w limicie.
Istnieje wiele powodów, dla których tryb ścisły MySQL może wymagać wyłączenia, jednak najczęstszym jest to, gdy serwer działa w trybie WHMCS — jest to wymagane od tego narzędzia.
Kontrola przed lotem
- Te instrukcje są przeznaczone specjalnie do wyłączania trybu ścisłego MySQL na zarządzanym serwerze Liquid Web z cPanel.
- Na serwerze powinien działać MySQL 5.6/5.7 lub MariaDB 10.x
- Do wykonania tego samouczka konieczny będzie dostęp do wiersza poleceń i dostępu z poziomu roota przez SSH.
Krok 1:Twórz kopie zapasowe, zawsze!
Zawsze, gdy modyfikujesz pliki na serwerze, zawsze najlepszą praktyką jest wcześniejsze wykonanie kopii zapasowej. Zapewnia to możliwość cofnięcia zmian, jeśli coś pójdzie nie tak; jest to również korzystne, ponieważ pomaga śledzić, kiedy i jakie zmiany zostały wprowadzone.
Po zalogowaniu się do SSH z użytkownikiem root wykonaj następujące czynności:
cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}
Krok 2:Wyłącz tryb ścisły MySQL
W zależności od serwera i bieżącej konfiguracji może być konieczna edycja jednego lub obu z poniższych plików na serwerze. Ogólnie rzecz biorąc, odpowiednie linie konfiguracyjne znajdują się tylko w jednym z nich, jednak może być w każdym z nich bez powodowania problemów; więc generalnie najlepiej jest sprawdzić oba.
Aby edytować pliki, otworzysz plik w swoim ulubionym edytorze wiersza poleceń. W tym przykładzie używamy „vim”.
vim /usr/my.cnf
vim /etc/my.cnf
W każdym powyższym pliku będziesz szukał linii o następującej treści:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Jeśli znajdziesz linię podobną do powyższej, która ustawia zmienną `sql_mode`, będziesz musiał zastąpić ją następującą linią, aby wyłączyć tryb ścisły MySQL.
sql_mode=""
Po dokonaniu tej korekty lub potwierdzeniu, że plik nie wymaga korekty, zapiszesz i zamkniesz plik.
Krok 3:Uruchom ponownie usługę MySQL
Na koniec, aby zmiany te były skuteczne, będziesz musiał ponownie uruchomić usługę MySQL, ponieważ będzie ona odczytywać pliki konfiguracyjne tylko podczas początkowego ładowania. Aby zmusić MySQL do korzystania z nowych plików konfiguracyjnych, wykonaj następujące czynności:
Dla serwerów CentOS 7:systemctl restart mysql
Dla CentOS 6 i wcześniejszych:/etc/init.d/mysql restart
Po wydaniu tego polecenia na serwerze usługa MySQL zostanie zrestartowana i załaduje wprowadzone zmiany. Jeśli wszystkie wskazówki zostały wykonane i wykonane, tryb ścisły MySQL powinien być teraz wyłączony.
Aby sprawdzić, czy proces został poprawnie zakończony, możesz uruchomić następujące polecenie:
mysql -e "SELECT @@sql_mode;"
Wynik może wyglądać podobnie do następującego:
+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+
Jeśli masz jakiekolwiek pytania lub nie czujesz się komfortowo, dokonując tych zmian samodzielnie, skontaktuj się z Heroic Support®.