MySQL:s och MariaDB:s strikta läge styr hur ogiltiga eller saknade värden i dataändringsfrågor hanteras; detta inkluderar INSERT-, UPDATE- och CREATE TABLE-satser. Med MySQL strikt läge aktiverat, vilket är standardtillståndet, kan ogiltig eller saknad data orsaka varningar eller fel när du försöker bearbeta frågan.
När strikt läge är inaktiverat skulle samma fråga få sina ogiltiga eller saknade värden justerade och skulle ge en enkel varning. Detta kan verka som det föredragna resultatet, men med strikt läge inaktiverat kan vissa åtgärder orsaka oväntade resultat; till exempel, när värdet som infogas överskrider den maximala teckengränsen kommer det att trunkeras för att passa gränsen.
Det finns olika anledningar till varför MySQL:s strikta läge kan behöva inaktiveras, men det vanligaste är när en server kör WHMCS – detta är ett krav för det verktyget.
Pre-Flight Check
- Dessa instruktioner är specifikt avsedda för att inaktivera MySQL strikt läge på en hanterad Liquid Web-server med cPanel.
- Servern bör köra antingen MySQL 5.6/5.7 eller MariaDB 10.x
- Kommandorads- och rotnivååtkomst via SSH kommer att vara nödvändigt för att följa denna handledning.
Steg #1:Gör säkerhetskopior, alltid!
När du ändrar filer på en server är det alltid bästa praxis att ta någon form av säkerhetskopia i förväg. Detta säkerställer att du har ett sätt att återställa ändringar om något går snett; det är också fördelaktigt eftersom det hjälper till att spåra när och vilka ändringar som gjordes.
När du är inloggad på SSH med root-användaren gör du följande:
cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}
Steg #2:Inaktivera MySQL strikt läge
Beroende på servern och de aktuella konfigurationerna kan du behöva redigera en eller båda av följande filer på servern. I allmänhet finns de relevanta konfigurationslinjerna bara i en av dem, men det kan finnas i någon av dem utan att orsaka problem; så generellt är det bäst att kontrollera båda.
För att redigera filerna öppnar du filen med din favorit kommandoradsredigerare. I det här exemplet använder vi 'vim'.
vim /usr/my.cnf
vim /etc/my.cnf
Inom varje fil ovan kommer du att leta efter en rad med följande innehåll:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Om du hittar en rad som liknar ovanstående som ställer in variabeln `sql_mode` måste du ersätta den med följande rad för att inaktivera MySQL strikt läge.
sql_mode=""
När denna justering har gjorts, eller du har bekräftat att filen inte behöver justeras, kommer du att spara och stänga filen.
Steg #3:Starta om MySQL-tjänsten
Slutligen, för att göra dessa ändringar effektiva måste du starta om MySQL-tjänsten eftersom den bara läser konfigurationsfilerna när den initialt laddas upp. För att tvinga MySQL att använda de nya konfigurationsfilerna gör du följande:
För CentOS 7-servrar:systemctl restart mysql
För CentOS 6 och tidigare:/etc/init.d/mysql restart
Efter att ha utfärdat detta kommando på servern kommer MySQL-tjänsten att startas om och kommer att ladda de ändringar som gjorts. Om alla anvisningar följdes och slutfördes, bör MySQL strikt läge nu inaktiveras.
För att verifiera att processen slutfördes korrekt kan du köra följande:
mysql -e "SELECT @@sql_mode;"
Utdata kan se ut som följande:
+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+
Om du har några frågor eller inte är bekväm med att göra dessa ändringar själv, var god kontakta Heroic Support®.