Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wyłączyć tryb ścisły MySQL?

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}

Powyższe polecenie wykorzystuje „rozwijanie nawiasów BASH” w celu wykonania kopii zapasowej pliku w jego oryginalnym katalogu.

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 vimie możesz nacisnąć „a” lub „i”, aby przejść do trybu wstawiania tekstu; naciśnięcie klawisza Escape (Esc) na klawiaturze powoduje powrót do trybu poleceń. Aby odświeżyć sobie edycję plików za pomocą vima, zobacz nasz samouczek nowego użytkownika:Przegląd edytora tekstu Vima.

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®.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MyCLI — klient MySQL/MariaDB z automatycznym uzupełnianiem i podświetlaniem składni

  2. Jak przeprowadzać uaktualnienia kroczące dla MySQL

  3. Użyj relacyjnych baz danych MySQL w Fedorze 12

  4. Wybierz ostatni wiersz w MySQL

  5. PHP PDO:zestaw znaków, nazwy zestawów?