Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So deaktivieren Sie den strengen MySQL-Modus

Der strikte Modus von MySQL und MariaDB steuert, wie ungültige oder fehlende Werte in Abfragen zur Datenänderung behandelt werden; dazu gehören INSERT-, UPDATE- und CREATE TABLE-Anweisungen. Wenn der strenge Modus von MySQL aktiviert ist, was der Standardzustand ist, können ungültige oder fehlende Daten Warnungen oder Fehler verursachen, wenn versucht wird, die Abfrage zu verarbeiten.

Wenn der strenge Modus deaktiviert ist, würden die ungültigen oder fehlenden Werte derselben Abfrage angepasst und eine einfache Warnung ausgegeben. Dies mag wie das bevorzugte Ergebnis erscheinen, jedoch können bestimmte Aktionen bei deaktiviertem Strict-Modus zu unerwarteten Ergebnissen führen; Wenn beispielsweise der eingefügte Wert die maximale Zeichenanzahl überschreitet, wird er abgeschnitten, damit er der Beschränkung entspricht.

Es gibt verschiedene Gründe, warum der strikte Modus von MySQL möglicherweise deaktiviert werden muss, der häufigste ist jedoch, wenn ein Server WHMCS ausführt – dies ist eine Voraussetzung für dieses Tool.

Check vor dem Flug

  • Diese Anweisungen sind speziell für die Deaktivierung des strengen MySQL-Modus auf einem verwalteten Liquid-Webserver mit cPanel vorgesehen.
  • Auf dem Server sollte entweder MySQL 5.6/5.7 oder MariaDB 10.x laufen
  • Kommandozeilen- und Root-Zugriff über SSH sind erforderlich, um diesem Tutorial zu folgen.

Schritt Nr. 1:Immer Backups erstellen!

Wenn Sie Dateien auf einem Server ändern, empfiehlt es sich immer, vorher eine Art Backup zu erstellen. Dadurch wird sichergestellt, dass Sie Änderungen rückgängig machen können, wenn etwas schief geht. Es ist auch vorteilhaft, weil es dabei hilft, nachzuverfolgen, wann und welche Änderungen vorgenommen wurden.

Gehen Sie wie folgt vor, während Sie als Root-Benutzer bei SSH angemeldet sind:

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

Der obige Befehl verwendet die „BASH-Klammererweiterung“, um eine Sicherungskopie der Datei in ihrem ursprünglichen Verzeichnis zu erstellen.

Schritt Nr. 2:Deaktivieren Sie den strengen MySQL-Modus

Abhängig vom Server und den aktuellen Konfigurationen müssen Sie möglicherweise eine oder beide der folgenden Dateien auf dem Server bearbeiten. Im Allgemeinen befinden sich die relevanten Konfigurationszeilen nur in einer von ihnen, es könnte sich jedoch in einer von beiden befinden, ohne dass es zu Problemen kommt. Daher ist es im Allgemeinen am besten, beides zu überprüfen.

Um die Dateien zu bearbeiten, öffnen Sie die Datei mit Ihrem bevorzugten Befehlszeilen-Editor. In diesem Beispiel verwenden wir „vim“.

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

In vim können Sie „a“ oder „i“ drücken, um in den Texteinfügemodus zu wechseln; Durch Drücken der Escape-Taste (Esc) auf Ihrer Tastatur kehren Sie in den Befehlsmodus zurück. Eine Auffrischung zum Bearbeiten von Dateien mit vim finden Sie in unserem Tutorial für neue Benutzer:Überblick über den Vim-Texteditor.

In jeder obigen Datei suchen Sie nach einer Zeile mit folgendem Inhalt:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Wenn Sie eine Zeile ähnlich der obigen finden, die die Variable `sql_mode` setzt, müssen Sie sie durch die folgende Zeile ersetzen, um den strengen Modus von MySQL zu deaktivieren.

sql_mode=""

Sobald diese Anpassung vorgenommen wurde oder Sie bestätigt haben, dass die Datei nicht angepasst werden muss, speichern und schließen Sie die Datei.

Schritt #3:Starten Sie den MySQL-Dienst neu

Damit diese Änderungen wirksam werden, müssen Sie schließlich den MySQL-Dienst neu starten, da er die Konfigurationsdateien nur liest, wenn er zum ersten Mal geladen wird. Um MySQL zu zwingen, die neuen Konfigurationsdateien zu verwenden, gehen Sie wie folgt vor:

Für CentOS 7-Server:
systemctl restart mysql

Für CentOS 6 und früher:
/etc/init.d/mysql restart

Nach Ausgabe dieses Befehls auf dem Server wird der MySQL-Dienst neu gestartet und lädt die vorgenommenen Änderungen. Wenn alle Anweisungen befolgt und abgeschlossen wurden, sollte der strenge MySQL-Modus jetzt deaktiviert sein.

Um zu überprüfen, ob der Prozess ordnungsgemäß abgeschlossen wurde, können Sie Folgendes ausführen:

mysql -e "SELECT @@sql_mode;"

Die Ausgabe kann etwa wie folgt aussehen:

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

Wenn Sie Fragen haben oder diese Änderungen nicht selbst vornehmen möchten, wenden Sie sich bitte an den Heroic Support®.