MySQL's og MariaDB's strenge tilstand kontrollerer, hvordan ugyldige eller manglende værdier i dataændrende forespørgsler håndteres; dette inkluderer INSERT-, UPDATE- og CREATE TABLE-sætninger. Med MySQL strict mode aktiveret, som er standardtilstanden, kan ugyldige eller manglende data forårsage advarsler eller fejl, når du forsøger at behandle forespørgslen.
Når streng tilstand er deaktiveret, vil den samme forespørgsel få sine ugyldige eller manglende værdier justeret og vil frembringe en simpel advarsel. Dette kan virke som det foretrukne resultat, men med streng tilstand deaktiveret kan visse handlinger forårsage uventede resultater; for eksempel, når værdien, der indsættes, overstiger den maksimale tegngrænse, afkortes den, så den passer til grænsen.
Der er forskellige grunde til, at MySQL's strenge tilstand muligvis skal deaktiveres, men den mest almindelige er, når en server kører WHMCS - dette er et krav til dette værktøj.
Tjek før flyvning
- Disse instruktioner er specifikt beregnet til at deaktivere MySQL strict mode på en administreret Liquid Web-server med cPanel.
- Serveren skal køre enten MySQL 5.6/5.7 eller MariaDB 10.x
- Kommandolinje- og rodniveauadgang via SSH vil være nødvendig for at følge denne vejledning.
Trin #1:Lav sikkerhedskopier, altid!
Når du ændrer filer på en server, er det altid bedst at tage en form for backup på forhånd. Dette sikrer, at du har en måde at fortryde ændringer, hvis noget går galt; det er også en fordel, fordi det hjælper med at spore, hvornår og hvilke ændringer der blev foretaget.
Mens du er logget på SSH med root-brugeren, skal du gøre følgende:
cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}
Trin #2:Deaktiver MySQL Strict Mode
Afhængigt af serveren og de aktuelle konfigurationer skal du muligvis redigere en eller begge af følgende filer på serveren. Generelt er de relevante konfigurationslinjer kun i én af dem, men det kan være i begge uden at forårsage problemer; så generelt er det bedst at tjekke begge dele.
For at redigere filerne åbner du filen med din foretrukne kommandolinjeeditor. I dette eksempel bruger vi 'vim'.
vim /usr/my.cnf
vim /etc/my.cnf
Inden for hver fil ovenfor vil du lede efter en linje med følgende indhold:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Hvis du finder en linje, der ligner ovenstående, der indstiller variablen `sql_mode`, skal du erstatte den med følgende linje for at deaktivere MySQL strict mode.
sql_mode=""
Når denne justering er foretaget, eller du har bekræftet, at filen ikke skal justeres, gemmer og lukker du filen.
Trin #3:Genstart MySQL-tjenesten
Til sidst, for at gøre disse ændringer effektive, skal du genstarte MySQL-tjenesten, da den kun læser konfigurationsfilerne, når den indlæses. For at tvinge MySQL til at bruge de nye konfigurationsfiler skal du gøre følgende:
For CentOS 7-servere:systemctl restart mysql
For CentOS 6 og tidligere:/etc/init.d/mysql restart
Efter at have udstedt denne kommando på serveren genstartes MySQL-tjenesten og indlæser de foretagne ændringer. Hvis alle anvisningerne blev fulgt og fuldført, skulle MySQL strict mode nu være deaktiveret.
For at bekræfte, at processen blev gennemført korrekt, kan du køre følgende:
mysql -e "SELECT @@sql_mode;"
Outputtet kan ligne følgende:
+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+
Hvis du har spørgsmål eller ikke er tryg ved at foretage disse ændringer selv, er du velkommen til at kontakte Heroic Support®.