sql >> Database >  >> RDS >> Mysql

Hoe MySQL Strikte Modus uit te schakelen

De strikte modus van MySQL en MariaDB bepaalt hoe ongeldige of ontbrekende waarden in query's voor het wijzigen van gegevens worden afgehandeld; dit omvat de instructies INSERT, UPDATE en CREATE TABLE. Als de strikte MySQL-modus is ingeschakeld, wat de standaardstatus is, kunnen ongeldige of ontbrekende gegevens waarschuwingen of fouten veroorzaken bij het verwerken van de query.

Als de strikte modus is uitgeschakeld, worden de ongeldige of ontbrekende waarden van dezelfde query aangepast en wordt er een eenvoudige waarschuwing weergegeven. Dit lijkt misschien het gewenste resultaat, maar als de strikte modus is uitgeschakeld, kunnen bepaalde acties onverwachte resultaten opleveren; als de waarde die wordt ingevoegd bijvoorbeeld de maximale tekenlimiet overschrijdt, wordt deze afgekapt om aan de limiet te voldoen.

Er zijn verschillende redenen waarom de strikte modus van MySQL moet worden uitgeschakeld, maar de meest voorkomende is wanneer een server WHMCS gebruikt - dit is een vereiste van die tool.

Pre-Flight Check

  • Deze instructies zijn specifiek bedoeld voor het uitschakelen van de strikte MySQL-modus op een beheerde Liquid Web-server met cPanel.
  • De server moet MySQL 5.6/5.7 of MariaDB 10.x draaien
  • Opdrachtregel en toegang op rootniveau via SSH is nodig om deze tutorial te volgen.

Stap #1:maak altijd back-ups!

Wanneer u bestanden op een server wijzigt, is het altijd het beste om vooraf een of andere vorm van een back-up te maken. Dit zorgt ervoor dat je een manier hebt om wijzigingen ongedaan te maken als er iets misgaat; het is ook nuttig omdat het helpt bij te houden wanneer en welke wijzigingen zijn aangebracht.

Terwijl je bent ingelogd op SSH met de rootgebruiker, doe je het volgende:

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

De bovenstaande opdracht gebruikt 'BASH-brace-uitbreiding' om een ​​reservekopie van het bestand in de oorspronkelijke map te maken.

Stap #2:MySQL Strict Mode uitschakelen

Afhankelijk van de server en de huidige configuraties moet u mogelijk een of beide van de volgende bestanden op de server bewerken. Over het algemeen bevinden de relevante configuratieregels zich slechts in een van hen, maar het kan in een van beide zijn zonder problemen te veroorzaken; dus over het algemeen is het het beste om beide aan te vinken.

Om de bestanden te bewerken, opent u het bestand met uw favoriete opdrachtregeleditor. In dit voorbeeld gebruiken we 'vim'.

vim /usr/my.cnf
vim /etc/my.cnf

In vim kun je op "a" of "i" drukken om de tekstinvoegmodus te openen; door op de escape-toets (Esc) op uw toetsenbord te drukken, keert u terug naar de opdrachtmodus. Zie onze Tutorial voor nieuwe gebruikers:overzicht van de Vim-teksteditor voor een opfriscursus over het bewerken van bestanden met vim.

Binnen elk bestand hierboven zoekt u naar een regel met de volgende inhoud:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Als u een regel vindt die lijkt op de bovenstaande en die de variabele `sql_mode` instelt, moet u deze vervangen door de volgende regel om de strikte MySQL-modus uit te schakelen.

sql_mode=""

Zodra deze aanpassing is gemaakt of u hebt bevestigd dat het bestand niet hoeft te worden aangepast, slaat u het bestand op en sluit u het.

Stap #3:Start de MySQL-service opnieuw

Ten slotte, om deze wijzigingen effectief te maken, moet u de MySQL-service opnieuw opstarten, omdat deze alleen de configuratiebestanden leest wanneer deze voor het eerst wordt geladen. Om MySQL te dwingen de nieuwe configuratiebestanden te gebruiken, doet u het volgende:

Voor CentOS 7-servers:
systemctl restart mysql

Voor CentOS 6 en eerder:
/etc/init.d/mysql restart

Na het geven van deze opdracht op de server wordt de MySQL-service opnieuw gestart en worden de aangebrachte wijzigingen geladen. Als alle instructies zijn gevolgd en voltooid, zou de strikte MySQL-modus nu uitgeschakeld moeten zijn.

Om te controleren of het proces correct is voltooid, kunt u het volgende uitvoeren:

mysql -e "SELECT @@sql_mode;"

De uitvoer kan er als volgt uitzien:

+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+

Als je vragen hebt of het niet prettig vindt om deze wijzigingen zelf aan te brengen, neem dan gerust contact op met Heroic Support®.


  1. Hoe privileges te beheren met rollen in MySQL

  2. PostgreSQL 12:Foreign Keys en gepartitioneerde tabellen

  3. Docker-container voor Postgres 9.1 stelt poort 5432 niet bloot aan host

  4. Alleen numerieke waarden retourneren in SQL Server