Heim >Datenbank >MySQL-Tutorial >Bringen Sie Ihnen einen Trick bei, um die sql_mode-Einstellung in MySQL zu korrigieren
sql_mode ist eine Variable, die leicht übersehen wird. Der Standardwert ist null. Mit dieser Einstellung können einige illegale Vorgänge zugelassen werden, z. B. das Erlauben des Einfügens einiger illegaler Daten. Dieser Wert muss in der Produktionsumgebung auf den strikten Modus eingestellt werden, daher müssen auch die Datenbanken in den Entwicklungs- und Testumgebungen festgelegt werden, damit Probleme während der Entwicklungs- und Testphase entdeckt werden können.
1 Erweiterte Berechtigungen werden nur für die nächste Verbindung wirksam, wirken sich nicht auf die aktuelle Sitzung aus und werden nach dem Neustart von MySQL ungültig, da MySQL bei Bedarf die entsprechenden Werte in der Konfigurationsdatei erneut liest Um dauerhaft zu sein, müssen Sie den Wert in der Konfigurationsdatei ändern.select @@session.sql_mode;
select @@global.sql_mode;
Speichern und beenden, Server neu starten, es wird dauerhaft wirksam
Allgemeine Werte von sql_mode sind wie folgt:
ONLY_FULL_GROUP_BY
Für GROUP BY-Aggregationsvorgänge, wenn die Spalten in SELECT nicht angezeigt werden in GROUP BY ist diese SQL ungültig, da die Spalte nicht in der GROUP BY-Klausel enthalten ist. In den Standardeinstellungen bedeutet das Einfügen von 0 oder NULL, dass der nächste automatisch steigende Wert generiert wird. Diese Option ist nützlich, wenn der Benutzer einen Wert von 0 einfügen möchte und die Spalte automatisch vergrößert wird.
STRICT_TRANS_TABLES
Wenn in diesem Modus ein Wert nicht in eine Transaktionstabelle eingefügt werden kann, wird der aktuelle Vorgang unterbrochen und es gibt keine Begrenzung für Nicht-TransaktionstabellenNO_ZERO_IN_DATE
Im strikten Modus , nicht zulässig Das Datum oder der Monat ist Null. Solange der Monat oder Tag des Datums einen Wert von 0 enthält, wird ein Fehler gemeldet, außer bei „0000-00-00“.NO_ZERO_DATE
Setzen Sie diesen Wert ein , die MySQL-Datenbank erlaubt das Einfügen von Nulldaten nicht. Das Einfügen von Nulldaten löst einen Fehler anstelle einer Warnung aus. Jedes Jahr, jeder Monat und jeder Tag, der nicht 0 ist, erfüllt die Anforderungen. Nur „0000-00-00“ meldet einen FehlerERROR_FOR_pISION_BY_ZERO
Während des INSERT- oder UPDATE-Vorgangs, wenn die Daten durch Null geteilt werden , wird anstelle einer Warnung ein Fehler generiert. Wenn der Modus nicht angegeben ist, gibt MySQL NULL zurück, wenn die Daten durch Null geteilt werden. Nach dem Festlegen des Modus wird ein Fehler gemeldet num ist null. Wenn dieser Wert nicht festgelegt ist, wird stattdessen die Standardspeicher-Engine verwendet und eine Ausnahme ausgelöst.PIPES_AS_CONCAT
behandelt „||“ als String-Verbindungsoperator und nicht als OR-Operator, was mit der Oracle-Datenbank identisch ist Es ähnelt auch der String-Splicing-Funktion ConcatANSI_QUOTES
Nach der Aktivierung von ANSI_QUOTES können Sie keine doppelten Anführungszeichen verwenden, um die Zeichenfolge in Anführungszeichen zu setzen, da diese als Bezeichner interpretiert wirdVerwandte Empfehlungen: „MySQL-Tutorial
“Das obige ist der detaillierte Inhalt vonBringen Sie Ihnen einen Trick bei, um die sql_mode-Einstellung in MySQL zu korrigieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!