Nekaj Vsebina Sistemi za upravljanje, kot so Typo, Contao, Contenido ali drugi sistemi, imajo težave z od MySQL 5.1 Na voljo je strogi način. Od različice 5.7 je to privzeta nastavitev.
Da bi lahko uporabljali tudi te sisteme CMS, je na strani strežnika še vedno mogoče izklopiti strogi način. Seveda je to le pogojno priporočljivo.
Kaj počne strogi način?
Strogi način MySQL/MariaDB nadzoruje, kako se obravnavajo neveljavne ali manjkajoče vrednosti v poizvedbah za spremembo podatkov, vključno z deklaracijami INSERT, UPDATE in CREATE.
Na ta način se neveljavni ali manjkajoči Podatki privede do opozoril ali napak pri poizvedbi SQL. Če je način scrict izklopljen, se neveljavne poizvedbe ali manjkajoče vrednosti prilagodijo in izda se preprosto opozorilo. To lahko privede do nepričakovanih rezultatov.
Primer je omejitev števila znakov. Če je strogi način izklopljen, bodo odvečni znaki skrajšani, da se bodo prilegali.
Zakaj se to zgodi le pri nekaterih sistemih CMS?
Lahko le ugibamo. Verjetno je koda tako obsežna, da je nihče ne more pregledati. Na eni strani sistem za upravljanje vsebine dela veliko ljudi, včasih prinesejo posamezne funkcije, ki jih potem več let ne gledajo več. Dokler ne pride do resnih težav, ni tako slabo.
Pri podobno prizadetem sistemu, kot je whmcs, je že videti drugače. Če so pomembni podatki odrezani, pride do nepravilnih dodelitev. To lahko postane problematično pri obračunavanju.
Kje lahko uporabite ta vodnik?
Navodila se nanašajo na sisteme Linux z MySQL 5.6/5.7 ali MariaDB 10.1 in višje z aktivnim strogim načinom.
Za izvedbo sprememb je potreben korenski dostop. Naša navodila se vedno nanašajo na Centos Linux. Pri drugih distribucijah so lahko konfiguracijske datoteke v drugih imenikih.
Korak 1: Ustvarjanje varnostnih kopij
Pri urejanju datotek vedno naredite varnostno kopijo. Preveč enostavno je nekaj nenamerno izbrisati.
cp -a /etc/my.cnf{,.strict.bak}
Ukaz ustvari datoteko my.cnf.strict.bak iz datoteke my.cnf v istem imeniku.
Korak 2: Onemogočite strogi način MySQL
V datoteki običajno ni sql_mode=..., zato je treba v razdelek dodati naslednjo vrstico [mysqld] :
sql_mode=""
Korak 3: Ponovni zagon storitve MySQL
Po urejanju datoteke je treba storitev znova zagnati, da se spremembe uporabijo.
systemctl restart mariadb
Po ponovnem zagonu storitve lahko nastavitev preverite z naslednjim ukazom. Tukaj je primer z geslom na Strežnik Plesk. Druga možnost je root in geslo.
mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;"
Nato se prikaže naslednje povratno sporočilo:
+————+
| @@sql_mode |
+————+
| |
+————+