Jak wyłączyć tryb "Strict Mode" MySQL?

Niektóre Treść Systemy zarządzania takie jak Typo, Contao, Contenido lub inne mają problemy z od kiedy MySQL 5.1 dostępny Strict Mode. Jest to ustawienie domyślne od wersji 5.7.

Aby można było korzystać z tych systemów CMS, istnieje również możliwość wyłączenia trybu ścisłego po stronie serwera. Jest to oczywiście tylko warunkowo zalecane.

Co robi tryb Surowy?

Tryb ścisły MySQL/MariaDB kontroluje, jak nieprawidłowe lub brakujące wartości są obsługiwane w zapytaniach o zmianę danych, w tym deklaracjach INSERT, UPDATE i CREATE.

Nieważne lub zaginione Dane prowadzą do ostrzeżeń lub błędów podczas wykonywania zapytania SQL. Jeśli tryb Scrict jest wyłączony, nieprawidłowe zapytania lub brakujące wartości są dostosowywane i wydawane jest proste ostrzeżenie. Może to prowadzić do nieoczekiwanych rezultatów.

Przykładem może być ograniczenie charakteru. Jeśli tryb Surowy jest wyłączony, nadmiar znaków zostanie odcięty, aby go dopasować.

Dlaczego dzieje się to tylko w przypadku niektórych systemów CMS?

Można tylko spekulować. Prawdopodobnie kod jest tak obszerny, że nikt nie może go zrozumieć. na system zarządzania treścią Dużo ludzi pracuje, niektórzy z nich wnoszą indywidualne funkcje, które nie są brane pod uwagę przez lata. Dopóki nie ma poważnych problemów, nie jest tak źle.

Z systemem takim jak whmcs, który również jest dotknięty, sytuacja jest zupełnie inna. Jeśli ważne dane zostaną obcięte, wystąpią nieprawidłowe przypisania. Może to być problematyczne w przypadku ugody.

Gdzie można zastosować te instrukcje?

Podręcznik odnosi się do systemów Linux z MySQL w wersji 5.6/5.7 lub MariaDB 10.1 i wyżej, gdzie aktywny jest Strict Mode.

Do dokonania zmian wymagany jest dostęp do korzeni. Nasze instrukcje zawsze odnoszą się do Centos Linux. W przypadku innych dystrybucji, pliki konfiguracyjne mogą być umieszczone w innych katalogach.

Krok 1: Tworzenie kopii zapasowych

Podczas edycji plików zawsze należy wykonać kopię zapasową. Możesz usunąć coś niezamierzenie o wiele za szybko.

cp -a /etc/ my.cnf{,.strict.bak}

Polecenie tworzy plik my.cnf.strict.bak z my.cnf w tym samym katalogu.

Krok 2: Wyłączenie trybu scentralizowanego MySQL

Plik zazwyczaj nie zawiera sql_mode=..., więc do sekcji należy dodać następujący wiersz [mysqld] :

sql_mode=""

Krok 3: Restart usługi MySQL

Po edycji pliku należy uruchomić ponownie usługę, aby zastosować zmiany.

restart systemctl mariadb

Po ponownym uruchomieniu usługi można sprawdzić ustawienia, wykonując poniższe polecenie. Tutaj jako przykład z hasłem na Serwer Plesk. Alternatywnie z roota i hasłem.

mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;"

Następnie powinien pojawić się następujący powrót:

+————+

| @@sql_mode |

+————+

| |

+————+

Artykuły bieżące