Kaip išjungti "MySQL" griežtąjį režimą

Kai kurie Turinys Valdymo sistemos, tokios kaip Typo, Contao, Contenido ar kitos sistemos, turi problemų su nuo "MySQL" 5.1 esamas griežtasis režimas. Nuo 5.7 versijos tai yra numatytasis nustatymas.

Kad būtų galima naudoti ir šias TVS sistemas, vis dar yra galimybė išjungti griežtąjį režimą serverio pusėje. Žinoma, tai tik sąlygiškai rekomenduojama.

Ką veikia griežtasis režimas?

"MySQL/MariaDB" griežtasis režimas kontroliuoja, kaip elgiamasi su negaliojančiomis arba trūkstamomis reikšmėmis duomenų keitimo užklausose, įskaitant INSERT, UPDATE ir CREATE deklaracijas.

Tokiu būdu negaliojantys arba trūkstami Duomenys atliekant SQL užklausą bus perspėjimų arba klaidų. Išjungus scrict režimą, neteisingos užklausos arba trūkstamos reikšmės pakoreguojamos ir pateikiamas paprastas įspėjimas. Tai gali lemti netikėtus rezultatus.

Pavyzdys - simbolių limitas. Išjungus griežtąjį režimą, pertekliniai simboliai sutrumpinami, kad tilptų.

Kodėl taip nutinka tik su kai kuriomis TVS sistemomis?

Galima tik spėlioti. Tikriausiai kodas yra toks platus, kad niekas negali jo įžvelgti. Vienoje turinio valdymo sistema dirba daug žmonių, kartais jie atneša atskiras funkcijas, į kurias paskui metų metus nebežiūrima. Kol nekyla rimtų problemų, nėra taip blogai.

Naudojant panašiai paveiktą sistemą, pavyzdžiui, whmcs, ji jau atrodo kitaip. Jei svarbūs duomenys atjungiami, tai lemia neteisingą paskirstymą. Tai gali kelti problemų, kai reikia išrašyti sąskaitą.

Kur galima pritaikyti šį vadovą?

Instrukcijos taikomos "Linux" sistemoms su "MySQL" 5.6/5.7 arba MariaDB 10.1 ir aukštesnės, kai įjungtas griežtasis režimas.

Norint atlikti pakeitimus, reikia šakninės prieigos. Mūsų nurodymuose visada pateikiama nuoroda į "Centos Linux. Kitų distribucijų konfigūracijos failai gali būti kituose kataloguose.

1 žingsnis: sukurkite atsargines kopijas

Redaguodami failus visada turėtumėte pasidaryti atsarginę kopiją. Per daug lengva netyčia ką nors ištrinti.

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

Komanda sukuria failą my.cnf.strict.bak iš my.cnf tame pačiame kataloge.

2 žingsnis: Išjunkite "MySQL" griežtąjį režimą

Paprastai faile nėra sql_mode=..., todėl į skyrių reikia įrašyti šią eilutę [mysqld] :

sql_mode=""

3 žingsnis: Iš naujo paleiskite "MySQL" paslaugą

Po failo redagavimo reikia iš naujo paleisti paslaugą, kad pakeitimai būtų pritaikyti.

systemctl restart mariadb

Iš naujo paleidę paslaugą, galite patikrinti nustatymą, atlikdami šią komandą. Čia pateikiamas pavyzdys su slaptažodžiu "Plesk" serveris. Arba su root ir slaptažodžiu.

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

Tuomet turėtų būti rodomas toks grįžtamasis langas:

+————+

| @@sql_mode |

+————+

| |

+————+

Aktualūs straipsniai