Kā atspējot MySQL stingro režīmu

Daži Saturs Pārvaldības sistēmām, piemēram, Typo, Contao, Contenido vai citām sistēmām, ir problēmas ar, jo MySQL 5.1 esošais stingrais režīms. Kopš versijas 5.7 tas ir aktīvs kā noklusējuma iestatījums.

Lai varētu izmantot arī šīs CMS sistēmas, servera pusē joprojām ir iespēja izslēgt stingro režīmu. Protams, tas ir tikai nosacīti ieteicams.

Ko dara Stingrais režīms?

MySQL/MariaDB stingrais režīms kontrolē, kā datu izmaiņu pieprasījumos, tostarp INSERT, UPDATE un CREATE deklarācijās, tiek apstrādātas nederīgas vai trūkstošas vērtības.

Šādā veidā nederīgas vai trūkstošas Dati radīt brīdinājumus vai kļūdas, kad tiek veikts SQL vaicājums. Ja scrict režīms ir izslēgts, nederīgie vai trūkstošie pieprasījumi tiek koriģēti un tiek izdots vienkāršs brīdinājums. Tas var radīt negaidītus rezultātus.

Piemēram, rakstzīmju ierobežojums. Ja stingrais režīms ir izslēgts, liekās rakstzīmes tiek saīsinātas, lai tās atbilstu.

Kāpēc tas notiek tikai ar dažām CMS sistēmām?

Var tikai spekulēt. Iespējams, ka kods ir tik plašs, ka neviens to nespēj saskatīt. Vienā satura pārvaldības sistēma strādā daudz cilvēku, dažkārt viņi ieved atsevišķas funkcijas, kuras pēc tam gadiem ilgi vairs netiek apskatītas. Kamēr nerodas nopietnas problēmas, tas nav tik slikti.

Ar līdzīgi ietekmētu sistēmu, piemēram, whmcs, tas jau izskatās citādi. Ja svarīgi dati tiek nogriezti, tas noved pie nepareiziem piešķīrumiem. Tas var kļūt problemātiski rēķinu izrakstīšanas gadījumā.

Kur var izmantot šo rokasgrāmatu?

Norādījumi attiecas uz Linux sistēmām ar MySQL 5.6/5.7 vai MariaDB 10.1 un augstāka, ja ir aktivizēts stingrais režīms.

Lai veiktu izmaiņas, ir nepieciešama saknes piekļuve. Mūsu norādījumi vienmēr attiecas uz Centos Linux. Citu izplatīšanu gadījumā konfigurācijas faili var atrasties citos direktorijos.

1. solis: Izveidojiet dublējumus

Rediģējot failus, vienmēr ir jāizveido dublējums. Ir pārāk viegli netīšām kaut ko izdzēst.

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

Komanda izveido my.cnf.strict.bak failu no my.cnf tajā pašā direktorijā.

2. solis: MySQL stingrā režīma atspējošana

Parasti failā nav sql_mode=..., tāpēc sadaļā būtu jāpievieno šāda rinda [mysqld] :

sql_mode=""

3. solis: Restartējiet MySQL pakalpojumu

Pēc faila rediģēšanas pakalpojums ir jārestartē, lai piemērotu izmaiņas.

systemctl restart mariadb

Pēc tam, kad pakalpojums ir restartēts, varat pārbaudīt iestatījumu, izpildot šādu komandu. Šeit kā piemērs ar paroli uz Plesk serveris. Alternatīvi ar root un paroli.

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

Pēc tam vajadzētu parādīties šādai atgriešanās informācijai:

+————+

| @@sql_mode |

+————+

| |

+————+

Pašreizējie raksti