Hur du inaktiverar MySQL Strict Mode

Några Innehåll Hanteringssystem som Typo, Contao, Contenido eller andra system har problem med att sedan MySQL 5.1 befintligt strikt läge. Denna inställning har varit aktiv som standardinställning sedan version 5.7.

För att man ska kunna använda även dessa CMS-system finns det fortfarande möjlighet att stänga av det strikta läget på serversidan. Naturligtvis rekommenderas detta endast på vissa villkor.

Vad gör det strikta läget?

MySQL/MariaDB:s strikta läge styr hur ogiltiga eller saknade värden hanteras i dataförfrågningar, inklusive INSERT-, UPDATE- och CREATE-deklarationer.

På detta sätt kan ogiltiga eller saknade Uppgifter leder till varningar eller fel när SQL-frågan ställs. När scrict-läget är avstängt justeras de ogiltiga frågorna eller de saknade värdena och en enkel varning utfärdas. Detta kan leda till oväntade resultat.

Ett exempel är en teckenbegränsning. Om det strikta läget är avstängt, förkortas överflödiga tecken så att de får plats.

Varför uppstår detta bara i vissa CMS-system?

Man kan bara spekulera. Förmodligen är koden så omfattande att ingen kan se igenom den. På en system för innehållshantering arbetar många människor, ibland tar de med sig enskilda funktioner som sedan inte längre ses på flera år. Så länge inga allvarliga problem uppstår är det inte så farligt.

Med ett system som också är drabbat som whmcs ser det redan annorlunda ut. Om viktiga uppgifter inte finns med, leder det till felaktiga tilldelningar. Detta kan sedan bli problematiskt vid fakturering.

Var kan den här guiden tillämpas?

Anvisningarna gäller Linuxsystem med MySQL 5.6/5.7 eller MariaDB 10.1 och högre med det strikta läget aktivt.

Root-åtkomst krävs för att göra ändringarna. I våra anvisningar hänvisas alltid till Centos Linux. För andra distributioner kan konfigurationsfilerna finnas i andra kataloger.

Steg 1: Skapa säkerhetskopior

När du redigerar filer bör du alltid göra en säkerhetskopia. Det är alldeles för lätt att radera något oavsiktligt.

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

Kommandot skapar en fil my.cnf.strict.bak från my.cnf i samma katalog.

Steg 2: Inaktivera MySQL Strict Mode

Det finns normalt ingen sql_mode=... i filen, så följande rad måste läggas till i avsnittet [mysqld] :

sql_mode=""

Steg 3: Starta om MySQL-tjänsten

När du har redigerat filen måste tjänsten startas om för att ändringarna ska gälla.

systemctl restart mariadb

När tjänsten har startats om kan du kontrollera inställningen genom att köra följande kommando. Här är ett exempel med lösenordet på en Plesk-server. Alternativt med root och lösenordet.

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

Följande retur bör då visas:

+————+

| @@sql_mode |

+————+

| |

+————+

Aktuella artiklar