Sådan deaktiveres MySQL Strict Mode

Nogle Indhold Forvaltningssystemer som Typo, Contao, Contenido eller andre systemer har problemer med den siden MySQL 5.1 eksisterende streng tilstand. Dette har været aktiv som standardindstilling siden version 5.7.

For at man også kan bruge disse CMS-systemer, er der stadig mulighed for at slå strict mode fra på serversiden. Dette er naturligvis kun en betinget anbefaling.

Hvad gør den strenge tilstand?

MySQL/MariaDB's strenge tilstand styrer, hvordan ugyldige eller manglende værdier håndteres i forespørgsler om dataændringer, herunder INSERT-, UPDATE- og CREATE-deklarationer.

På denne måde kan ugyldige eller manglende Data fører til advarsler eller fejl, når SQL-forespørgslen udføres. Når scrict-tilstanden er slået fra, justeres de ugyldige forespørgsler eller manglende værdier, og der udstedes en simpel advarsel. Dette kan føre til uventede resultater.

Et eksempel kunne være en tegngrænse. Når den strenge tilstand er slået fra, bliver overskydende tegn afkortet, så det passer.

Hvorfor sker dette kun med nogle CMS-systemer?

Man kan kun spekulere. Sandsynligvis er koden så omfattende, at ingen kan gennemskue den. På den ene indholdsstyringssystem arbejder mange mennesker, nogle gange bringer de enkelte funktioner, som der så ikke længere bliver kigget på i årevis. Så længe der ikke opstår alvorlige problemer, er det ikke så slemt.

Med et system som whmcs, der ligeledes er påvirket, ser det allerede anderledes ud. Hvis vigtige data er afskåret, fører det til forkerte tildelinger. Dette kan så blive problematisk i forbindelse med fakturering.

Hvor kan denne vejledning anvendes?

Vejledningen henviser til Linux-systemer med MySQL 5.6/5.7 eller MariaDB 10.1 og højere med den strenge tilstand aktiv.

Der kræves root-adgang for at foretage ændringerne. Vores instruktioner henviser altid til Centos Linux. For andre distributioner kan konfigurationsfilerne være placeret i andre mapper.

Trin 1: Opret sikkerhedskopier

Når du redigerer filer, bør du altid tage en sikkerhedskopi. Det er alt for nemt at slette noget utilsigtet.

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

Kommandoen opretter en fil my.cnf.strict.bak fra my.cnf i den samme mappe.

Trin 2: Deaktiver MySQL Strict Mode

Der er normalt ingen sql_mode=... i filen, så følgende linje skal tilføjes i afsnittet [mysqld] :

sql_mode="""

Trin 3: Genstart MySQL-tjenesten

Når du har redigeret filen, skal tjenesten genstartes for at anvende ændringerne.

systemctl restart mariadb

Når tjenesten er blevet genstartet, kan du kontrollere indstillingen ved at udføre følgende kommando. Her som et eksempel med adgangskoden på en Plesk-server. Alternativt med root og adgangskoden.

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

Følgende resultat bør derefter vises:

+————+

| @@@sql_mode |

+————+

| |

+————+

Aktuelle artikler